Ghecco

Sistema Potenziamento * ADMIN ONLY* [da fixare]

Jul 2nd, 2020 (edited)
86
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Sistema Potenziamenti * ADMIN ONLY *
  2.  
  3. // (In alto)
  4. #define DIRECTORY_POTENZIAMENTI         "PrisonRoleplay/Potenziamenti/%d.ini"
  5. #define MAX_POTENZIAMENTI               (5)
  6.  
  7. #define DIALOG_EDITORPOTENZIAMENTO          (394)
  8. #define DIALOG_SCEGLIPOTENZIAMENTOTIPO      (339)
  9. #define DIALOG_RIMUOVIPOTENZIAMENTOID       (453)
  10. #define DIALOG_SPOSTAPOTENZIAMENTOID        (343)
  11. #define DIALOG_TELETRASPORTATIPOTENZIAMENTO (353)
  12. #define DIALOG_VISUALIZZAPOTENZIAMENTI      (448)
  13.  
  14. #define POTENZIAMENTO_TAPISRULANT       (2627)
  15. #define POTENZIAMENTO_CYCLETTE          (2630)
  16.  
  17. enum PotenziamentiInfo
  18. {
  19.     p_OggettoID,
  20.     Text3D:p_LabelID = INVALID_3DTEXT_ID,
  21.     p_Tipo,
  22.     bool:InUso,
  23.     Float:p_X,
  24.     Float:p_Y,
  25.     Float:p_Z,
  26.     Float:p_RX,
  27.     Float:p_RY,
  28.     Float:p_RZ,
  29.     p_Interior,
  30.     p_VirtualWorld
  31. }
  32. new Potenziamento[MAX_POTENZIAMENTI][PotenziamentiInfo], Iterator:Potenziamenti_Esistenti<MAX_POTENZIAMENTI>;
  33.  
  34. // OnPlayerCommandText
  35.  
  36. if (strcmp("/editorpotenziamenti", cmdtext, true, 10) == 0)
  37.     {
  38.         if(IsPlayerConnected(playerid))
  39.         {
  40.             if(Utente[playerid][Loggato] == true)
  41.             {
  42.                 if(Utente[playerid][LivelloAdmin] <= 3 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Non hai i permessi adatti per accedere a questo comando.");
  43.    
  44.                 ShowPlayerDialog(playerid, DIALOG_EDITORPOTENZIAMENTO, DIALOG_STYLE_LIST, "{FFFFFF}Editor potenziamenti", "{FFFFFF}Crea potenziamento\n{FFFFFF}Elimina potenziamento\n{FFFFFF}Sposta potenziamento\n{FFFFFF}Teletrasportarti al potenziamento\n{FFFFFF}Visualizza potenziamenti", "Seleziona", "Chiudi");
  45.             }
  46.         }
  47.  
  48.         return 1;
  49.     }
  50.  
  51.  
  52.     // OnPlayerDialogResponse
  53.  
  54.  
  55.     if(dialogid == DIALOG_EDITORPOTENZIAMENTO)
  56.     {
  57.         if(response)
  58.         {
  59.             new str_sceltapotenziamento[1024]
  60.             switch(listitem)
  61.             {
  62.                 case 0:
  63.                 {
  64.                     if(Iter_Free(Potenziamenti_Esistenti) == -1) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} E' stato raggiunto il massimo degli strumenti creati.");
  65.  
  66.                     if(Iter_Count(Potenziamenti_Esistenti) == 0)
  67.                     {
  68.                         strcat(str_sceltapotenziamento, "Oggetto\tAbilità\n", sizeof(str_sceltapotenziamento));
  69.                         strcat(str_sceltapotenziamento, "{FFFFFF}Tapis Rulant\t Agilità\n", sizeof(str_sceltapotenziamento));
  70.                         strcat(str_sceltapotenziamento, "{FFFFFF}Cyclette\t Agilità\n", sizeof(str_sceltapotenziamento));
  71.  
  72.                         ShowPlayerDialog(playerid, DIALOG_SCEGLIPOTENZIAMENTOTIPO, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Scelta del tipo di potenziamento",str_sceltapotenziamento, "Seleziona", "Chiudi");
  73.                     }
  74.                     else
  75.                     {
  76.                         foreach(new p_i : Potenziamenti_Esistenti)
  77.                         {
  78.                             if(IsPlayerInRangeOfPoint(playerid, 2.0, Potenziamento[p_i][p_X], Potenziamento[p_i][p_Y], Potenziamento[p_i][p_Z]))
  79.                             {
  80.                                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} In questa posizione è già presente un potenziamento.");
  81.                                 return 1;
  82.  
  83.                             }
  84.                         }
  85.  
  86.                         strcat(str_sceltapotenziamento, "Oggetto\tAbilità\n", sizeof(str_sceltapotenziamento));
  87.                         strcat(str_sceltapotenziamento, "{FFFFFF}Tapis Rulant\t Agilità\n", sizeof(str_sceltapotenziamento));
  88.                         strcat(str_sceltapotenziamento, "{FFFFFF}Cyclette\t Agilità\n", sizeof(str_sceltapotenziamento));
  89.  
  90.                         ShowPlayerDialog(playerid, DIALOG_SCEGLIPOTENZIAMENTOTIPO, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Scelta del tipo di potenziamento",str_sceltapotenziamento, "Seleziona", "Chiudi");
  91.                     }
  92.                 }
  93.                 case 1:ShowPlayerDialog(playerid, DIALOG_RIMUOVIPOTENZIAMENTOID, DIALOG_STYLE_INPUT, "{FFFFFF}ID Potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento che vuoi cancellare", "Elimina", "Chiudi");
  94.                 case 2:ShowPlayerDialog(playerid, DIALOG_SPOSTAPOTENZIAMENTOID, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento che vuoi cancellare", "Sposta", "Annulla");
  95.                 case 3:ShowPlayerDialog(playerid, DIALOG_TELETRASPORTATIPOTENZIAMENTO, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento a cui vuoi teletrasportarti", "Procedi", "Annulla");
  96.                
  97.                 case 4:
  98.                 {
  99.                     if(Iter_Count(Potenziamenti_Esistenti) == 0) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF}Non ci sono potenziamenti da visualizzare.");
  100.  
  101.                     new stringa[100];
  102.                     strins(str_sceltapotenziamento,"Oggetto\tID\tIn Uso\n", 0, sizeof(str_sceltapotenziamento));
  103.                     foreach(new pi : Potenziamenti_Esistenti)
  104.                     {
  105.                         format(stringa, sizeof(stringa), "%s\t%d\t%s\n", GetNomePotenziamento(Potenziamento[pi][p_Tipo]), pi, (Potenziamento[pi][InUso] != true) ? ("{FF0000}Inutilizzato{FFFFFF}") : ("{67E528}Utilizzato{FFFFFF}"));
  106.                         strcat(str_sceltapotenziamento, stringa, sizeof(str_sceltapotenziamento));
  107.                     }
  108.                     ShowPlayerDialog(playerid, DIALOG_VISUALIZZAPOTENZIAMENTI, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Visualizza Potenziamenti", str_sceltapotenziamento, "Okay", "");
  109.                 }
  110.             }
  111.         }
  112.         return 1;
  113.     }
  114.  
  115.  
  116.     if(dialogid == DIALOG_SCEGLIPOTENZIAMENTOTIPO)
  117.     {
  118.         if(response)
  119.         {
  120.             if(Iter_Free(Potenziamenti_Esistenti) == -1) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} E' stato raggiunto il massimo dei potenziamenti creati.");
  121.  
  122.             new freeid = Iter_Free(Potenziamenti_Esistenti);
  123.  
  124.  
  125.             new Float:p_x, Float:p_y, Float:p_z, Float:p_angle;
  126.             GetInFrontOfPlayer(playerid, 0.5, p_x, p_y, p_z, p_angle);
  127.             p_z = p_z-1;
  128.  
  129.             Potenziamento[freeid][p_Interior] = GetPlayerInterior(playerid);
  130.             Potenziamento[freeid][p_VirtualWorld] = GetPlayerVirtualWorld(playerid);
  131.  
  132.             SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} Il potenziamento ID #%d è stato creato.", freeid);
  133.             SendClientMessage(playerid, -1, "{FFFFFF} Clicca sul FLOPPY per salvare la nuova posizione dell'oggetto.");
  134.  
  135.             switch(listitem)
  136.             {
  137.  
  138.                 case 0:
  139.                 {
  140.                     Potenziamento[freeid][p_Tipo] = POTENZIAMENTO_TAPISRULANT;
  141.                     Potenziamento[freeid][p_OggettoID] = CreateDynamicObject(POTENZIAMENTO_TAPISRULANT, p_x, p_y, p_z, 0, 0, p_angle);
  142.                 }
  143.                 case 1:
  144.                 {
  145.                     Potenziamento[freeid][p_Tipo] = POTENZIAMENTO_CYCLETTE;
  146.                     Potenziamento[freeid][p_OggettoID] = CreateDynamicObject(POTENZIAMENTO_CYCLETTE, p_x, p_y, p_z, 0, 0, p_angle);
  147.                 }
  148.             }
  149.             Iter_Add(Potenziamenti_Esistenti, freeid);
  150.  
  151.             ModificaOggetto[playerid] = 11;
  152.             EditDynamicObject(playerid, Potenziamento[freeid][p_OggettoID]);
  153.         }
  154.         else return ShowPlayerDialog(playerid, DIALOG_EDITORPOTENZIAMENTO, DIALOG_STYLE_LIST, "{FFFFFF}Editor potenziamenti", "{FFFFFF}Crea potenziamento\n{FFFFFF}Elimina potenziamento\n{FFFFFF}Sposta potenziamento\n{FFFFFF}Teletrasportarti al potenziamento\n{FFFFFF}Visualizza potenziamenti", "Seleziona", "Chiudi");
  155.            
  156.         return 1;
  157.     }
  158.  
  159.     if(dialogid == DIALOG_RIMUOVIPOTENZIAMENTOID)
  160.     {
  161.  
  162.         if(response)
  163.         {
  164.             if(!strlen(inputtext))
  165.             {
  166.                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun ID dell'oggetto potenziamento é stato assegnato.");
  167.                 ShowPlayerDialog(playerid, DIALOG_RIMUOVIPOTENZIAMENTOID, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento che vuoi cancellare", "Elimina", "Annulla");
  168.                 return 1;
  169.             }
  170.  
  171.             if(!IsNumeric(inputtext))
  172.             {
  173.                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  174.                 ShowPlayerDialog(playerid, DIALOG_RIMUOVIPOTENZIAMENTOID, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento che vuoi cancellare", "Elimina", "Annulla");
  175.                 return 1;
  176.             }
  177.             else
  178.             {
  179.                 new filepotenziamento[256], idpotenziamento = strval(inputtext);
  180.  
  181.                 format(filepotenziamento, sizeof(filepotenziamento), DIRECTORY_POTENZIAMENTI, idpotenziamento);
  182.  
  183.                 if(Potenziamento[idpotenziamento][InUso] == true) return SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF}Non puoi eliminare il potenziamento ID #%d poichè è attualmente in utilizzo.", idpotenziamento);
  184.                 else if(dini_Exists(filepotenziamento))
  185.                 {
  186.                     DestroyDynamic3DTextLabel(Potenziamento[idpotenziamento][p_LabelID]);
  187.                     DestroyDynamicObject(Potenziamento[idpotenziamento][p_OggettoID]);
  188.  
  189.                     AzzeraPotenziamentoEnum(idpotenziamento);
  190.  
  191.                     Iter_Remove(Potenziamenti_Esistenti, idpotenziamento);
  192.                     dini_Remove(filepotenziamento);
  193.                 }
  194.                 else return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} L'ID del potenziamento inserito non esiste.");
  195.             }
  196.  
  197.         }
  198.         else return ShowPlayerDialog(playerid, DIALOG_EDITORPOTENZIAMENTO, DIALOG_STYLE_LIST, "{FFFFFF}Editor potenziamenti", "{FFFFFF}Crea potenziamento\n{FFFFFF}Elimina potenziamento\n{FFFFFF}Sposta potenziamento\n{FFFFFF}Teletrasportarti al potenziamento\n{FFFFFF}Visualizza potenziamenti", "Seleziona", "Chiudi");
  199.         return 1;
  200.     }
  201.     if(dialogid == DIALOG_SPOSTAPOTENZIAMENTOID)
  202.     {
  203.         if(response)
  204.         {
  205.             if(!strlen(inputtext))
  206.             {
  207.                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun ID dell'oggetto potenziamento é stato assegnato.");
  208.                 ShowPlayerDialog(playerid, DIALOG_SPOSTAPOTENZIAMENTOID, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento che vuoi spostare", "Sposta", "Annulla");
  209.                 return 1;
  210.             }
  211.  
  212.             if(!IsNumeric(inputtext))
  213.             {
  214.                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  215.                 ShowPlayerDialog(playerid, DIALOG_SPOSTAPOTENZIAMENTOID, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento che vuoi spostare", "Sposta", "Annulla");
  216.                 return 1;
  217.             }
  218.             else
  219.             {
  220.                 new Float:p_x, Float:p_y, Float:p_z, Float:p_angle, idpotenziamento = strval(inputtext), filepotenziamento[256];
  221.                 format(filepotenziamento, sizeof(filepotenziamento), DIRECTORY_POTENZIAMENTI, idpotenziamento);
  222.                 if(Potenziamento[idpotenziamento][InUso] == true) return SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF}Non puoi eliminare il potenziamento ID #%d poichè è attualmente in utilizzo.", idpotenziamento);
  223.                 else if(dini_Exists(filepotenziamento))
  224.                 {
  225.                     GetInFrontOfPlayer(playerid, 0.5, p_x, p_y, p_z, p_angle);
  226.                     p_z = p_z-1;
  227.                    
  228.                     SetDynamicObjectPos(Potenziamento[idpotenziamento][p_OggettoID], p_x, p_y, p_z);
  229.  
  230.                     ModificaOggetto[playerid] = 11;
  231.                     EditDynamicObject(playerid, Potenziamento[idpotenziamento][p_OggettoID]);
  232.                 }
  233.                 else return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} L'ID del potenziamento inserito non esiste.");
  234.             }
  235.         }
  236.         else return ShowPlayerDialog(playerid, DIALOG_EDITORPOTENZIAMENTO, DIALOG_STYLE_LIST, "{FFFFFF}Editor potenziamenti", "{FFFFFF}Crea potenziamento\n{FFFFFF}Elimina potenziamento\n{FFFFFF}Sposta potenziamento\n{FFFFFF}Teletrasportarti al potenziamento\n{FFFFFF}Visualizza potenziamenti", "Seleziona", "Chiudi");
  237.         return 1;
  238.     }
  239.     if(dialogid == DIALOG_TELETRASPORTATIPOTENZIAMENTO)
  240.     {
  241.         if(response)
  242.         {
  243.             if(!strlen(inputtext))
  244.             {
  245.                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun ID dell'oggetto potenziamento é stato assegnato.");
  246.                 ShowPlayerDialog(playerid, DIALOG_TELETRASPORTATIPOTENZIAMENTO, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento a cui vuoi teletrasportarti", "Teletrasportati", "Annulla");
  247.                 return 1;
  248.             }
  249.  
  250.             if(!IsNumeric(inputtext))
  251.             {
  252.                 SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  253.                 ShowPlayerDialog(playerid, DIALOG_TELETRASPORTATIPOTENZIAMENTO, DIALOG_STYLE_INPUT, "{FFFFFF}ID potenziamento", "{FFFFFF}Inserisci l'ID del potenziamento a cui vuoi teletrasportarti", "Teletrasportati", "Annulla");
  254.                 return 1;
  255.             }
  256.             else
  257.             {
  258.                 new idpotenziamento = strval(inputtext), filepotenziamento[256];
  259.  
  260.                 format(filepotenziamento, sizeof(filepotenziamento), DIRECTORY_POTENZIAMENTI, idpotenziamento);
  261.  
  262.                 if(dini_Exists(filepotenziamento))
  263.                 {
  264.                     SetPlayerPos(playerid, Potenziamento[idpotenziamento][p_X], Potenziamento[idpotenziamento][p_Y], Potenziamento[idpotenziamento][p_Z]+1);
  265.                     SetPlayerInterior(playerid, Potenziamento[idpotenziamento][p_Interior]);
  266.                     SetPlayerVirtualWorld(playerid, Potenziamento[idpotenziamento][p_VirtualWorld]);
  267.                 }
  268.                 else return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} L'ID del potenziamento inserito non esiste.");
  269.  
  270.             }
  271.         }
  272.         else return ShowPlayerDialog(playerid, DIALOG_EDITORPOTENZIAMENTO, DIALOG_STYLE_LIST, "{FFFFFF}Editor potenziamenti", "{FFFFFF}Crea potenziamento\n{FFFFFF}Elimina potenziamento\n{FFFFFF}Sposta potenziamento\n{FFFFFF}Teletrasportarti al potenziamento\n{FFFFFF}Visualizza potenziamenti", "Seleziona", "Chiudi");
  273.            
  274.         return 1;
  275.     }
  276.     if(dialogid == DIALOG_VISUALIZZAPOTENZIAMENTI)
  277.     {
  278.         if(response)
  279.         {
  280.             ShowPlayerDialog(playerid, DIALOG_EDITORPOTENZIAMENTO, DIALOG_STYLE_LIST, "{FFFFFF}Editor potenziamenti", "{FFFFFF}Crea potenziamento\n{FFFFFF}Elimina potenziamento\n{FFFFFF}Sposta potenziamento\n{FFFFFF}Teletrasportarti al potenziamento\n{FFFFFF}Visualizza potenziamenti", "Seleziona", "Chiudi");
  281.         }
  282.         return 1;
  283.     }
  284.  
  285.  
  286. // OnPlayerEditDynamicObject
  287.  
  288.  
  289.  
  290.     case 11:
  291.         {
  292.             new idpotenziamento = GetIDPotenziamento(objectid), str_filepotenziamento[256], str_labelpotenziamento[100];
  293.             if(response == EDIT_RESPONSE_CANCEL)
  294.             {
  295.                 SetDynamicObjectPos(objectid, oldX, oldY, oldZ);
  296.                 SetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  297.  
  298.                 Potenziamento[idpotenziamento][p_X] = oldX;
  299.                 Potenziamento[idpotenziamento][p_Y] = oldY;
  300.                 Potenziamento[idpotenziamento][p_Z] = oldZ;
  301.                 Potenziamento[idpotenziamento][p_RX] = oldRotX;
  302.                 Potenziamento[idpotenziamento][p_RY] = oldRotY;
  303.                 Potenziamento[idpotenziamento][p_RZ] = oldRotZ;
  304.                 Potenziamento[idpotenziamento][p_Interior] = GetPlayerInterior(playerid);
  305.                 Potenziamento[idpotenziamento][p_VirtualWorld] = GetPlayerVirtualWorld(playerid);
  306.  
  307.                 format(str_labelpotenziamento, sizeof(str_labelpotenziamento), "{20B2AA}%s #%d\n{FFFFFF}(Premi Y)", GetNomePotenziamento(Potenziamento[idpotenziamento][p_Tipo]), idpotenziamento);
  308.                
  309.                 if(Potenziamento[idpotenziamento][p_LabelID] != Text3D:INVALID_3DTEXT_ID) DestroyDynamic3DTextLabel(Potenziamento[idpotenziamento][p_LabelID]);
  310.                 Potenziamento[idpotenziamento][p_LabelID] = CreateDynamic3DTextLabel(str_labelpotenziamento, -1, Potenziamento[idpotenziamento][p_X], Potenziamento[idpotenziamento][p_Y], Potenziamento[idpotenziamento][p_Z]+1.5, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), -1);
  311.  
  312.                 SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} Hai annullato la modifica del potenziamento (%s) #%d.", GetNomePotenziamento(Potenziamento[idpotenziamento][p_Tipo]), idpotenziamento);
  313.  
  314.  
  315.                 format(str_filepotenziamento, sizeof(str_filepotenziamento), DIRECTORY_POTENZIAMENTI, idpotenziamento);
  316.  
  317.                 if(!dini_Exists(str_filepotenziamento)) dini_Create(str_filepotenziamento);
  318.  
  319.                 SalvaPotenziamentoSingolo(idpotenziamento);
  320.             }
  321.             else if(response == EDIT_RESPONSE_FINAL)
  322.             {
  323.  
  324.                 SetDynamicObjectPos(objectid,x, y, z);
  325.                 SetDynamicObjectRot(objectid, rx, ry, rz);
  326.  
  327.                 Potenziamento[idpotenziamento][p_X] = x;
  328.                 Potenziamento[idpotenziamento][p_Y] = y;
  329.                 Potenziamento[idpotenziamento][p_Z] = z;
  330.                 Potenziamento[idpotenziamento][p_RX] = rx;
  331.                 Potenziamento[idpotenziamento][p_RY] = ry;
  332.                 Potenziamento[idpotenziamento][p_RZ] = rz;
  333.                 Potenziamento[idpotenziamento][p_Interior] = GetPlayerInterior(playerid);
  334.                 Potenziamento[idpotenziamento][p_VirtualWorld] = GetPlayerVirtualWorld(playerid);
  335.  
  336.                 format(str_labelpotenziamento, sizeof(str_labelpotenziamento), "{20B2AA}%s #%d\n{FFFFFF}(Premi Y)", GetNomePotenziamento(Potenziamento[idpotenziamento][p_Tipo]), idpotenziamento);
  337.  
  338.                 if(Potenziamento[idpotenziamento][p_LabelID] != -Text3D:INVALID_3DTEXT_ID) DestroyDynamic3DTextLabel(Potenziamento[idpotenziamento][p_LabelID]);
  339.                 Potenziamento[idpotenziamento][p_LabelID] = CreateDynamic3DTextLabel(str_labelpotenziamento, -1, Potenziamento[idpotenziamento][p_X], Potenziamento[idpotenziamento][p_Y], Potenziamento[idpotenziamento][p_Z]+1.5, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), -1);
  340.  
  341.                 SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} Hai modificato la posizione del potenziamento (%s) #%d.", GetNomePotenziamento(Potenziamento[idpotenziamento][p_Tipo]), idpotenziamento);
  342.  
  343.                 format(str_filepotenziamento, sizeof(str_filepotenziamento), DIRECTORY_POTENZIAMENTI, idpotenziamento);
  344.                
  345.                 if(!dini_Exists(str_filepotenziamento)) dini_Create(str_filepotenziamento);
  346.  
  347.                 SalvaPotenziamentoSingolo(idpotenziamento);
  348.             }
  349.         }
  350.  
  351. // In OnGameModeInit
  352.  
  353.         CaricaPotenziamenti();
  354.  
  355. // In fondo (controlla se GetInFrontOfPlayer è già presente )
  356.  
  357. stock GetIDPotenziamento(objectid_p)
  358. {
  359.     new id_p = -1;
  360.     foreach(new a_p : Potenziamenti_Esistenti)
  361.     {
  362.         if(Potenziamento[a_p][p_OggettoID] == objectid_p)
  363.         {
  364.             id_p = a_p;
  365.             break;
  366.         }
  367.     }
  368.     return id_p;
  369. }
  370.  
  371. stock AzzeraPotenziamentoEnum(id_potenziamento)
  372. {
  373.     Potenziamento[id_potenziamento][p_OggettoID] = 0;
  374.     Potenziamento[id_potenziamento][p_LabelID] = Text3D:INVALID_3DTEXT_ID;
  375.     Potenziamento[id_potenziamento][p_Tipo] = 0;
  376.  
  377.     //funzione che leva il giocatore da quel oggetto
  378.  
  379.     Potenziamento[id_potenziamento][p_X] = 0.0;
  380.     Potenziamento[id_potenziamento][p_Y] = 0.0;
  381.     Potenziamento[id_potenziamento][p_Z] = 0.0;
  382.     Potenziamento[id_potenziamento][p_RX] = 0.0;
  383.     Potenziamento[id_potenziamento][p_RY] = 0.0;
  384.     Potenziamento[id_potenziamento][p_RZ] = 0.0;
  385.     Potenziamento[id_potenziamento][p_Interior] = 0;
  386.     Potenziamento[id_potenziamento][p_VirtualWorld] = 0;
  387.     return 1;
  388. }
  389.  
  390. stock GetNomePotenziamento(tipoid)
  391. {
  392.     new str_nomepotenziamento[256];
  393.     switch(tipoid)
  394.     {
  395.         case POTENZIAMENTO_TAPISRULANT: str_nomepotenziamento = "Tapis Rulant";
  396.         case POTENZIAMENTO_CYCLETTE: str_nomepotenziamento = "Cyclette";
  397.     }
  398.     return str_nomepotenziamento;
  399. }
  400.  
  401. stock SalvaPotenziamentoSingolo(pid)
  402. {
  403.     new filepotenziamento[256];
  404.     format(filepotenziamento, sizeof(filepotenziamento), DIRECTORY_POTENZIAMENTI, pid);
  405.     if(dini_Exists(filepotenziamento))
  406.     {
  407.  
  408.         dini_IntSet(filepotenziamento, "Tipo", Potenziamento[pid][p_Tipo]);
  409.  
  410.         dini_FloatSet(filepotenziamento, "Posizione X", Potenziamento[pid][p_X]);
  411.         dini_FloatSet(filepotenziamento, "Posizione Y", Potenziamento[pid][p_Y]);
  412.         dini_FloatSet(filepotenziamento, "Posizione Z", Potenziamento[pid][p_Z]);
  413.         dini_FloatSet(filepotenziamento, "Rotazione X", Potenziamento[pid][p_RX]);
  414.         dini_FloatSet(filepotenziamento, "Rotazione Y", Potenziamento[pid][p_RY]);
  415.         dini_FloatSet(filepotenziamento, "Rotazione Z", Potenziamento[pid][p_RZ]);
  416.  
  417.         dini_IntSet(filepotenziamento, "Interior", Potenziamento[pid][p_Interior]);
  418.         dini_IntSet(filepotenziamento, "VirtualWorld", Potenziamento[pid][p_VirtualWorld]);
  419.  
  420.         printf("Potenziamento ID: %d (%s) Salvato.", pid, GetNomePotenziamento(Potenziamento[pid][p_Tipo]));
  421.     }
  422.     return 1;
  423. }
  424. stock CaricaPotenziamenti()
  425. {
  426.     for(new i = 0; i < MAX_POTENZIAMENTI+1; i++)
  427.     {
  428.         new filepotenziamento[256], str_labelpotenziamento[256];
  429.         format(filepotenziamento, sizeof(filepotenziamento), DIRECTORY_POTENZIAMENTI, i);
  430.         if(dini_Exists(filepotenziamento))
  431.         {
  432.             Potenziamento[i][p_Tipo] = dini_Int(filepotenziamento, "Tipo");
  433.  
  434.             Potenziamento[i][p_X] = dini_Float(filepotenziamento, "Posizione X");
  435.             Potenziamento[i][p_Y] = dini_Float(filepotenziamento, "Posizione Y");
  436.             Potenziamento[i][p_Z] = dini_Float(filepotenziamento, "Posizione Z");
  437.             Potenziamento[i][p_RX] = dini_Float(filepotenziamento, "Posizione RX");
  438.             Potenziamento[i][p_RY] = dini_Float(filepotenziamento, "Posizione RY");
  439.             Potenziamento[i][p_RZ] = dini_Float(filepotenziamento, "Posizione RZ");
  440.  
  441.             Potenziamento[i][p_Interior] = dini_Int(filepotenziamento, "Interior");
  442.             Potenziamento[i][p_VirtualWorld] = dini_Int(filepotenziamento, "VirtualWorld");
  443.  
  444.             format(str_labelpotenziamento, sizeof(str_labelpotenziamento), "{20B2AA}%s #%d\n{FFFFFF}(Premi Y)", GetNomePotenziamento(Potenziamento[i][p_Tipo]), i);
  445.    
  446.             Potenziamento[i][p_LabelID] = CreateDynamic3DTextLabel(str_labelpotenziamento, -1, Potenziamento[i][p_X], Potenziamento[i][p_Y], Potenziamento[i][p_Z]+1.5, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Potenziamento[i][p_VirtualWorld],  Potenziamento[i][p_Interior], -1);
  447.             Potenziamento[i][p_OggettoID] = CreateDynamicObject(Potenziamento[i][p_Tipo], Potenziamento[i][p_X], Potenziamento[i][p_Y], Potenziamento[i][p_Z], Potenziamento[i][p_RX], Potenziamento[i][p_RY], Potenziamento[i][p_RZ]);
  448.  
  449.             Iter_Add(Potenziamenti_Esistenti, i);
  450.  
  451.             printf("Potenziamento ID: %d (%s) Caricato.", i, GetNomePotenziamento(Potenziamento[i][p_Tipo]));
  452.         }
  453.     }
  454.     return 1;
  455. }
  456. stock GetInFrontOfPlayer(playerid,  Float:distance, &Float:xposizione, &Float:yposizione, &Float:zposizione, &Float:angle)
  457. {
  458.     GetPlayerPos(playerid, xposizione, yposizione, zposizione);
  459.     GetPlayerFacingAngle(playerid, angle);
  460.  
  461.     xposizione += (distance * floatsin(-angle, degrees));
  462.     yposizione += (distance * floatcos(-angle, degrees));
  463. }
  464. //OnGamemodeExit
  465.  
  466. foreach(new pid : Potenziamenti_Esistenti) { SalvaPotenziamentoSingolo(pid);}
  467.  
  468. // Per aggiungere un nuovo oggetto
  469.  
  470. // Aggionare:
  471. //GetNomePotenziamento
  472. //DIALOG_EDITORPOTENZIAMENTO E DIALOG_SCEGLIPOTENZIAMENTOTIPO
RAW Paste Data