Ghecco

Pawn | Sistema Telecamera [Da fixare] - x BrunoNapoli97

May 6th, 2020
95
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define GetDynamicObjectModel(%0) Streamer_GetIntData(STREAMER_TYPE_OBJECT, %0, E_STREAMER_MODEL_ID)
  2.  
  3.  
  4.  
  5. #define DIALOG_EDITORTELECAMERE     (ID)
  6. #define DIALOG_NOMETELECAMERAID     (ID)
  7. #define DIALOG_NOMETELECAMERA       (ID)
  8. #define DIALOG_RIMUOVITELECAMERA    (ID)
  9. #define DIALOG_SPOSTATELECAMERA     (ID)
  10. #define DIALOG_RIPARATELECAMERA     (ID)
  11. #define DIALOG_GOTOTELECAMERA       (ID)
  12. #define DIALOG_VISUALIZZATELECAMERE (ID)
  13.  
  14.  
  15.  
  16. #define MAX_TELECAMERE (10)
  17. #define DIRECTORY_TELECAMERE "PrisonRoleplay/Telecamere/%d.ini"
  18. enum telecamerainfo
  19. {
  20.     Nome[50],
  21.     OggettoID,
  22.     Float:TPosX,
  23.     Float:TPosY,
  24.     Float:TPosZ,
  25.     Float:TRotX,
  26.     Float:TRotY,
  27.     Float:TRotZ,
  28.     Float:LookPosX,
  29.     Float:LookPosY,
  30.     float:LookPosZ,
  31.     Interior,
  32.     VirtualWorld,
  33.     Text3D:LabelID,
  34.     Bool:stato
  35.  
  36. };
  37. new Telecamera[MAX_TELECAMERE][telecamerainfo];
  38.  
  39.  
  40.  
  41. if (strcmp("/editortelecamere", cmdtext, true, 10) == 0)
  42. {
  43.     if(Utente[playerid][LivelloAdmin] <= 3 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Non hai i permessi adatti per accedere a questo comando.");
  44.     {
  45.         new str_dialogtelecamere[512];
  46.         strcat(str_dialogtelecamere, "{FFFFFF}Crea telecamera\n", sizeof(str_dialogtelecamere));
  47.         strcat(str_dialogtelecamere, "{FFFFFF}Elimina telecamera\n", sizeof(str_dialogtelecamere));
  48.         strcat(str_dialogtelecamere, "{FFFFFF}Sposta telecamere\n", sizeof(str_dialogtelecamere));
  49.         strcat(str_dialogtelecamere, "{FFFFFF}Modifica Nome telecamera\n", sizeof(str_dialogtelecamere));
  50.         strcat(str_dialogtelecamere, "{FFFFFF}Ripara telecamera\n", sizeof(str_dialogtelecamere));
  51.         strcat(str_dialogtelecamere, "{FFFFFF}Gotati alla telecamera\n", sizeof(str_dialogtelecamere));
  52.         ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Editor telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  53.     }
  54.     return 1;
  55. }
  56.  
  57.  
  58.  
  59.  
  60. if (strcmp("/cctv", cmdtext, true, 10) == 0)
  61. {
  62.     if(Utente[playerid][LivelloAdmin] <= 3 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Non hai i permessi adatti per accedere a questo comando."); // cambiare se appartiene alla fazione polizia
  63.     {
  64.         if(IsPlayerInRangeOfPoint(playerid, 1.0, 0.0, 0.0, 0.0))
  65.         {
  66.             new str_dialogtelecamere[700], str_handledialogtelecamere[90];
  67.             for(new i=0; i < MAX_TELECAMERE+1; i++)
  68.             {
  69.                 //if(Telecamera[id][OggettoID] == 0) break;
  70.                 if(Telecamera[i][OggettoID] == 0)continue;
  71.                 else
  72.                 {
  73.                     format(str_handledialogtelecamere, 700, "Cam %d:'%s'", i, Telecamera[i][Nome]);
  74.                     strcat(str_dialogtelecamere, str_handledialogtelecamere, sizeof(str_dialogtelecamere));
  75.                 }
  76.             }
  77.  
  78.             ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Visualizza Telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  79.         }
  80.     }
  81.     return 1;
  82. }
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91. if(dialogid == DIALOG_EDITORTELECAMERE)
  92. {
  93.     if(response)
  94.     {
  95.         switch(listitem)
  96.         {
  97.             case 0:
  98.             {
  99.                 for(new id; id < MAX_TELECAMERE+1; id++)
  100.                 {
  101.                     if(id >= MAX_CELLE) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il massimo di celle creabili é stato raggiunto.");
  102.  
  103.                     if(VerificaTelecamere(id) == 1)
  104.                     {
  105.                         new Float:PosX, Float:PosY, PosZ;
  106.  
  107.                         GetPlayerPos(playerid, PosX, PosY, PosY);
  108.  
  109.                         Telecamera[id][OggettoID] = CreateDynamicObject(1886, PosX, PosY, PosY,  0.00000, 0.00000, 0.00000, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));     
  110.                         EditDynamicObject(playerid, Telecamera[id][OggettoID]); //permette di modificare la posizione dell'oggetto.
  111.  
  112.                         new Float: PosModelloCreatoX, Float:PosModelloCreatoY, Float:PosModelloCreatoZ;
  113.                         GetInFrontOfObject(Telecamera[id][OggettoID], PosModelloCreatoX, PosModelloCreatoY, PosModelloCreatoZ, 1.0);
  114.                         SetPlayerPos(playerid, PosModelloCreatoX, PosModelloCreatoY, PosModelloCreatoZ);
  115.            
  116.                         SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} La telecamera %d é stata creata con successo, modifica la sua posizione.");
  117.                         SendClientMessage(playerid, -1, "{FFFFFF} Ricordati quando clicchi sul FLOPPY di trovarti nella direzione in cui vuoi che la telecamera guardi.");
  118.  
  119.                         SetPVarInt(playerid, "IDTelecamera", id);
  120.                         ModificaOggetto[playerid] = 6;
  121.                         break;                     
  122.                     }
  123.                 }
  124.             }
  125.             case 1:ShowPlayerDialog(playerid, DIALOG_RIMUOVITELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi cancellare", "Elimina", "Annulla");
  126.             case 2:ShowPlayerDialog(playerid, DIALOG_SPOSTATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi spostare", "Prosegui", "Annulla");
  127.             case 3:ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi rinominare", "Prosegui", "Annulla");
  128.             case 4:ShowPlayerDialog(playerid, DIALOG_RIPARATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi riparare", "Ripara", "Annulla");
  129.             case 5:ShowPlayerDialog(playerid, DIALOG_GOTOTELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera da cui vuoi gotarti", "Gotati", "Annulla");
  130.         }
  131.     }
  132. }
  133.  
  134.  
  135. if(dialogid == DIALOG_RIMUOVITELECAMERA)
  136. {
  137.     if(response == 1)
  138.     {
  139.         new idtelecamera = strval(inputtext);
  140.         new filetelecamera[256];
  141.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, idtelecamera);
  142.  
  143.         if(!strlen(inputtext))
  144.         {
  145.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun id della telecamera é stato assegnato.");
  146.             ShowPlayerDialog(playerid, DIALOG_RIMUOVITELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi cancellare", "Elimina", "Annulla");
  147.             return 1;
  148.         }
  149.  
  150.         if(!IsNumeric(inputtext))
  151.         {
  152.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  153.             ShowPlayerDialog(playerid, DIALOG_RIMUOVITELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi cancellare", "Elimina", "Annulla");
  154.             return 1;
  155.         }
  156.  
  157.         if(dini_Exists(filetelecamera))
  158.         {
  159.             ResettaTelecamera(idtelecamera);
  160.             dini_Remove(filetelecamera);
  161.  
  162.             SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} La Telecamera %d é stata eliminata con successo.", idtelecamera);
  163.         }
  164.         else
  165.         {
  166.             ShowPlayerDialog(playerid, DIALOG_RIMUOVITELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi cancellare", "Elimina", "Annulla");
  167.             SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF} la Telecamera %d non é esistente.", idtelecamera);
  168.         }
  169.         return 1;
  170.     }
  171.     else ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Editor telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  172. }
  173.  
  174.  
  175. if(dialogid == DIALOG_SPOSTATELECAMERA)
  176. {
  177.     if(response == 1)
  178.     {
  179.         new telecameraid = strval(inputtext);
  180.         new filetelecamera[256];
  181.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, telecameraid);
  182.  
  183.         if(!strlen(inputtext))
  184.         {
  185.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun id telecamera é stato assegnato.");
  186.             ShowPlayerDialog(playerid, DIALOG_SPOSTATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi spostare", "Prosegui", "Annulla");
  187.             return 1;
  188.         }
  189.  
  190.         if(!IsNumeric(inputtext))
  191.         {
  192.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  193.             ShowPlayerDialog(playerid, DIALOG_SPOSTATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi spostare", "Prosegui", "Annulla");
  194.             return 1;
  195.         }
  196.  
  197.         if(dini_Exists(filetelecamera))
  198.         {
  199.             new Float:Posizionex, Float:Posizioney, Float:Posizionez;
  200.             SetDynamicObjectPos(Telecamera[telecameraid][OggettoID], Posizionex, Posizioney, Posizionez);
  201.  
  202.             ModificaOggetto[playerid] = 7;
  203.             SetPVarInt(playerid, "IDTelecamera", telecameraid);
  204.  
  205.             EditDynamicObject(playerid, Telecamera[telecameraid][OggettoID]);
  206.             SendClientMessage(playerid, -1, "{FFFFFF} Ricordati quando clicchi sul FLOPPY di trovarti nella direzione in cui vuoi che la telecamera guardi.");
  207.        
  208.         }
  209.         else
  210.         {
  211.             ShowPlayerDialog(playerid, DIALOG_SPOSTATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi spostare", "Prosegui", "Annulla");
  212.             SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF} la Telecamera %d non é esistente.", idtelecamera);
  213.         }
  214.     }
  215.     else ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Editor telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  216.     return 1;
  217. }
  218.  
  219.  
  220.  
  221. if(dialogid == DIALOG_NOMETELECAMERAID)
  222. {
  223.     if(response)
  224.     {
  225.         new idtelecamera = strval(inputtext);
  226.         new filetelecamera[256];
  227.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, idtelecamera);
  228.  
  229.         if(!strlen(inputtext))
  230.         {
  231.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun id della telecamera é stato assegnato.");
  232.             ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi rinominare", "Prosegui", "Annulla");
  233.             return 1;
  234.         }
  235.  
  236.         if(!IsNumeric(inputtext))
  237.         {
  238.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  239.             ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi rinominare", "Prosegui", "Annulla");
  240.             return 1;
  241.         }
  242.  
  243.         if(dini_Exists(filetelecamera))
  244.         {
  245.             SetPVarInt(playerid, "IDTelecamera", idtelecamera);
  246.             ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}Nome Telecamera", "{FFFFFF}Inserisci il nome che vuoi dare alla telecamera", "Prosegui", "Annulla");
  247.         }
  248.         else
  249.         {
  250.             ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi rinominare", "Prosegui", "Annulla");
  251.             SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF} la Telecamera %d non é esistente.", idtelecamera);
  252.         }
  253.         return 1;
  254.     }
  255.     else ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Editor telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  256.     return 1;
  257. }
  258.  
  259.  
  260.  
  261. if(dialogid == DIALOG_NOMETELECAMERA)
  262. {
  263.     if(response)
  264.     {
  265.         new telecameraid = GetPVarInt(playerid, "IDTelecamera");
  266.         if(!strlen(inputtext))
  267.         {
  268.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Non hai inserito nessun nome da assegnare alla telecamera.");
  269.             ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}Nome Telecamera", "{FFFFFF}Inserisci il nome che vuoi dare alla telecamera", "Prosegui", "Annulla");
  270.         }
  271.         else if(strlen(inputtext) >= 50)
  272.         {
  273.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Hai inserito troppi caratteri per il nome da assegnare alla telecamera (MAX 50).");
  274.             ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}Nome Telecamera", "{FFFFFF}Inserisci il nome che vuoi dare alla telecamera", "Prosegui", "Annulla");
  275.         }
  276.         else
  277.         {
  278.             SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} Alla Telecamera %d é stato assegnato il nome '%s'.", idtelecamera, inputtext);
  279.             format(Telecamera[telecameraid][Nome], 50, "%s", inputtext);
  280.             SalvaTelecameraSingola(telecameraid);
  281.         }
  282.     }
  283.     else ShowPlayerDialog(playerid, DIALOG_NOMETELECAMERAID, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi rinominare", "Prosegui", "Annulla");
  284.     DeletePVar(playerid, "IDTelecamera");
  285.     return 1;
  286. }
  287.  
  288.  
  289. if(dialogid == DIALOG_RIPARATELECAMERA)
  290. {
  291.     if(response)
  292.     {
  293.         new idtelecamera = strval(inputtext);
  294.         new filetelecamera[256];
  295.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, idtelecamera);
  296.  
  297.         if(!strlen(inputtext))
  298.         {
  299.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun id della telecamera é stato assegnato.");
  300.             ShowPlayerDialog(playerid, DIALOG_RIPARATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi riparare", "Ripara", "Annulla");
  301.             return 1;
  302.         }
  303.  
  304.         if(!IsNumeric(inputtext))
  305.         {
  306.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  307.             ShowPlayerDialog(playerid, DIALOG_RIPARATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi riparare", "Ripara", "Annulla");
  308.             return 1;
  309.         }
  310.  
  311.         if(dini_Exists(filetelecamera))
  312.         {
  313.             Telecamera[idtelecamera][Stato] = true;
  314.             SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} La Telecamera %d é stata riparata con successo.", idtelecamera);
  315.  
  316.             SalvaTelecameraSingola(idtelecamera);
  317.         }
  318.         else
  319.         {
  320.             ShowPlayerDialog(playerid, DIALOG_RIPARATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi riparare", "Ripara", "Annulla");
  321.             SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF} la Telecamera %d non é esistente.", idtelecamera);
  322.         }
  323.     }
  324.     else ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Editor telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  325. }
  326.  
  327.  
  328. if(dialogid == DIALOG_GOTOTELECAMERA)
  329. {
  330.     if(response)
  331.     {
  332.         new idtelecamera = strval(inputtext);
  333.         new filetelecamera[256];
  334.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, idtelecamera);
  335.  
  336.         if(!strlen(inputtext))
  337.         {
  338.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Nessun id della telecamera é stato assegnato.");
  339.             ShowPlayerDialog(playerid, DIALOG_GOTOTELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera da cui vuoi gotarti", "Gotati", "Annulla");
  340.             return 1;
  341.         }
  342.  
  343.         if(!IsNumeric(inputtext))
  344.         {
  345.             SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Il valore inserito non é un valore numerico.");
  346.             ShowPlayerDialog(playerid, DIALOG_GOTOTELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera da cui vuoi gotarti", "Gotati", "Annulla");
  347.             return 1;
  348.         }
  349.  
  350.         if(dini_Exists(filetelecamera))
  351.         {
  352.             SetPlayerInterior(playerid, Telecamera[idtelecamera][Interior]);
  353.             SetPlayerVirtualWorld(playerid, Telecamera[idtelecamera][VirtualWorld]);
  354.             SetPlayerPos(playerid, Telecamera[idtelecamera][TPosX], Telecamera[idtelecamera][TPosY], Telecamera[idtelecamera][TPosZ]);
  355.            
  356.             SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} Ti sei gotato alla Telecamera %d ('%s').", idtelecamera, Telecamera[idtelecamera][Nome]);
  357.  
  358.         }
  359.         else
  360.         {
  361.             ShowPlayerDialog(playerid, DIALOG_RIPARATELECAMERA, DIALOG_STYLE_INPUT, "{FFFFFF}ID Telecamera", "{FFFFFF}Inserisci l'ID della telecamera che vuoi riparare", "Ripara", "Annulla");
  362.             SendClientMessageFormatted(playerid, -1, "{FF0000}Errore:{FFFFFF} la Telecamera %d non é esistente.", idtelecamera);
  363.         }
  364.     }
  365.     else ShowPlayerDialog(playerid, DIALOG_EDITORTELECAMERE, DIALOG_STYLE_LIST, "{FFFFFF}Editor telecamere",str_dialogtelecamere, "Seleziona", "Chiudi");
  366. }
  367.  
  368.  
  369. if(dialogid == DIALOG_VISUALIZZATELECAMERE)
  370. {
  371.     if(response)
  372.     {
  373.         new id;
  374.  
  375.         for(new j, i=0; i < MAX_TELECAMERE+1; i++)// Controlla che listitem sia uguale allo stesso numero della telecamera esistente
  376.         {
  377.             if(Telecamera[id][OggettoID] == 0) continue;
  378.             else
  379.             {
  380.                 if(listitem == j)
  381.                 {
  382.                     id = i;
  383.                     break;
  384.                 }
  385.                 else j++;
  386.             }
  387.         }
  388.         if(Telecamera[id][Stato] == false) return SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} la Telecamera è disattivata.");
  389.  
  390.         SetPlayerCameraPos(playerid, Telecamera[id][TPosX], Telecamera[id][TPosY], Telecamera[id][TPosZ]);
  391.         SetPlayerCameraLookAt(playerid, Telecamera[id][TRotX], Telecamera[id][TRotY], Telecamera[id][TRotZ]);
  392.         SetPVarInt(playerid, "IDTelecamera_Visualizzata", id);
  393.     }
  394. }
  395.  
  396.  
  397. // Sotto OnPlayerKeyStateChange
  398. if(newkeys == KEY_CTRL_BACK) //Tasto H
  399. {
  400.     if(GetPVarInt(playerid, "IDTelecamera_Visualizzata") != 0)
  401.     {
  402.         SetCameraBehindPlayer(playerid);
  403.         DeletePVar(playerid, "IDTelecamera_Visualizzata");
  404.     }
  405. }
  406.  
  407.  
  408.  
  409. public OnPlayerShootDynamicObject(playerid, weaponid, objectid, Float:x, Float:y, Float:z);
  410.  
  411. {
  412.     if(GetDynamicObjectModel(objectid) == 1886)
  413.     {
  414.         for(new i=0; i < MAX_TELECAMERE+1; i++)
  415.         {
  416.             if(Telecamera[i][OggettoID] == 0) continue;
  417.             else
  418.             {
  419.                 if(objectid == Telecamera[i][OggettoID])
  420.                 {
  421.                     if(Telecamera[i][Stato] == true)
  422.                     {
  423.  
  424.                         new str_cellalabel[100];
  425.                         format(str_cellalabel, sizeof(str_cellalabel), "Telecamera #%d\nStato:{32CD32} Disattivata", idtelecamera);
  426.                         Update3DTextLabelText(Telecamera[i][LabelID], -1, str_cellalabel);
  427.  
  428.                         Telecamera[i][Stato] = false;
  429.                         AudioStreamForPlayersInRange("https://audio.jukehost.co.uk/c51739e5dfee135a0f7ebd898ca904594f300b14/21d60ebf589", 5.0, Telecamera[i][TPosX], Telecamera[i][TPosY], Telecamera[i][TPosZ]);  
  430.  
  431.                         foreach(Player, a)
  432.                         {
  433.                             if(GetPVarInt(a, "IDTelecamera_Visualizzata") == i)
  434.                             {
  435.                                 SetCameraBehindPlayer(a);
  436.                                 SendClientMessageFormatted(a, -1, "{FF0000}Errore:{FFFFFF} La telecamera '%s' (%d) è stata disattivata.", Telecamera[i][Nome], i);
  437.                             }
  438.                         }
  439.                         break;
  440.                     }
  441.                 }
  442.             }
  443.         }
  444.     }
  445.     return 1;
  446. }
  447.  
  448.  
  449.  
  450. case 6: //creazione Telecamera
  451. {
  452.     new idtelecamera = GetPVarInt(playerid, "IDTelecamera");
  453.  
  454.     if(response == EDIT_RESPONSE_CANCEL) //se annulli la posizione
  455.     {
  456.         DestroyDynamicObject(Telecamere[idtelecamera][OggettoID]);
  457.         SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Hai annullato la modifica della posizione della telecamera.");
  458.         ResettaTelecamera(idtelecamera);
  459.         DeletePVar(playerid, "IDTelecamera");
  460.         ModificaOggetto[playerid] = 0;
  461.         return 1;
  462.     }
  463.     else if(response == EDIT_RESPONSE_FINAL)
  464.     {
  465.         new str_filetelecamere[256], str_cellalabel[256], Float:playerposx, Float:playerposy, Float:playerposz;
  466.         format(str_filetelecamere, sizeof(str_filetelecamere), DIRECTORY_CELLE, idtelecamera);
  467.         GetPlayerPos(playerid, playerposx, playerposy, playerposz);
  468.  
  469.         Telecamera[idtelecamera][TPosX] = x;
  470.         Telecamera[idtelecamera][TPosY] = y;
  471.         Telecamera[idtelecamera][TposZ] = z;
  472.  
  473.         Telecamera[idtelecamera][TRotX] = rx;
  474.         Telecamera[idtelecamera][TRotY] = ry;
  475.         Telecamera[idtelecamera][TRotZ] = rz;
  476.  
  477.         Telecamera[idtelecamera][LookPosX] = playerposx;
  478.         Telecamera[idtelecamera][LookPosY] = playerposy;
  479.         Telecamera[idtelecamera][LookPosZ] = playerposz;
  480.  
  481.         Telecamera[idtelecamera][Interior] = GetPlayerInterior(playerid);
  482.         Telecamera[idtelecamera][VirtualWorld] = GetPlayerVirtualWorld(playerid);
  483.         Telecamera[idtelecamera][Stato] = true;
  484.  
  485.         SetDynamicObjectPos(Telecamera[idtelecamera][OggettoID], x, y, z);
  486.         SetDynamicObjectRot(Telecamera[idtelecamera][OggettoID], rx, ry, rz);
  487.  
  488.         format(str_cellalabel, sizeof(str_cellalabel), "Telecamera #%d\nStato:{32CD32} Attiva", idtelecamera);
  489.         Telecamera[idtelecamera][LabelID] = Create3DTextLabel(str_cellalabel, -1, x, y, z, 3.0, GetPlayerVirtualWorld(playerid), 0);
  490.  
  491.         SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} La Telecamera %d é stata creata con successo.", idtelecamera);
  492.  
  493.         Dini_Create(str_filetelecamere);
  494.         SalvaTelecameraSingola(idtelecamera);
  495.         ModificaOggetto[playerid] = 0;
  496.  
  497.     }
  498. }
  499. case 7: // sposta telecamera
  500. {
  501.     new idtelecamera = GetPVarInt(playerid, "IDTelecamera");
  502.  
  503.     if(response == EDIT_RESPONSE_CANCEL)
  504.     {
  505.         SendClientMessage(playerid, -1, "{FF0000}Errore:{FFFFFF} Hai annullato la modifica della posizione della telecamera.");
  506.  
  507.         DeletePVar(playerid, "IDTelecamera");
  508.         ModificaOggetto[playerid] = 0;
  509.  
  510.         return 1;
  511.     }
  512.     else if(response == EDIT_RESPONSE_FINAL)
  513.     {
  514.         ResettaTelecamera(idtelecamera);
  515.  
  516.         new str_filetelecamere[256], str_cellalabel[256], Float:playerposx, Float:playerposy, Float:playerposz;
  517.         format(str_filetelecamere, sizeof(str_filetelecamere), DIRECTORY_CELLE, idtelecamera);
  518.         GetPlayerPos(playerid, playerposx, playerposy, playerposz);
  519.  
  520.         Telecamera[idtelecamera][OggettoID] = objectid;
  521.  
  522.         Telecamera[idtelecamera][TPosX] = x;
  523.         Telecamera[idtelecamera][TPosY] = y;
  524.         Telecamera[idtelecamera][TposZ] = z;
  525.  
  526.         Telecamera[idtelecamera][TRotX] = rx;
  527.         Telecamera[idtelecamera][TRotY] = ry;
  528.         Telecamera[idtelecamera][TRotZ] = rz;
  529.  
  530.         Telecamera[idtelecamera][LookPosX] = playerposx;
  531.         Telecamera[idtelecamera][LookPosY] = playerposy;
  532.         Telecamera[idtelecamera][LookPosZ] = playerposz;
  533.  
  534.         Telecamera[idtelecamera][Interior] = GetPlayerInterior(playerid);
  535.         Telecamera[idtelecamera][VirtualWorld] = GetPlayerVirtualWorld(playerid);
  536.         Telecamera[idtelecamera][Stato] = true;
  537.  
  538.         SetDynamicObjectPos(Telecamera[idtelecamera][OggettoID], x, y, z);
  539.         SetDynamicObjectRot(Telecamera[idtelecamera][OggettoID], rx, ry, rz);
  540.  
  541.         format(str_cellalabel, sizeof(str_cellalabel), "Telecamera #%d\nStato:{32CD32} Attiva", idtelecamera);
  542.         Telecamera[idtelecamera][LabelID] = Create3DTextLabel(str_cellalabel, -1, x, y, z, 3.0, GetPlayerVirtualWorld(playerid), 0);
  543.  
  544.         SendClientMessageFormatted(playerid, -1, "{32CD32}Successo:{FFFFFF} La Telecamera %d é stata spostata con successo.", idtelecamera);
  545.  
  546.         SalvaTelecameraSingola(idtelecamera);
  547.         ModificaOggetto[playerid] = 0;
  548.     }
  549. }
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556. stock SalvaTelecameraSingola(telecameraid)
  557. {
  558.     new filetelecamera[256];
  559.     format(filetelecamera, sizeof(filetelecamera), DIRECTORY_CELLE, telecameraid);
  560.  
  561.     if(dini_Exists(filetelecamera))
  562.     {
  563.         dini_Set(filetelecamera, "Nome Telecamera", Telecamera[telecameraid][Nome]);
  564.         dini_FloatSet(filetelecamera, "TPosX", Telecamera[telecameraid][TPosX]);
  565.         dini_FloatSet(filetelecamera, "TPosY", Telecamera[telecameraid][TPosY]);
  566.         dini_FloatSet(filetelecamera, "TPosZ", Telecamera[telecameraid][TPosZ]);
  567.         dini_FloatSet(filetelecamera, "TRotX", Telecamera[telecameraid][TRotX]);
  568.         dini_FloatSet(filetelecamera, "TRotY", Telecamera[telecameraid][TRotY]);
  569.         dini_FloatSet(filetelecamera, "TRotZ", Telecamera[telecameraid][TRotZ]);
  570.         dini_FloatSet(filetelecamera, "LookPosX", Telecamera[i][LookPosX]);
  571.         dini_FloatSet(filetelecamera, "LookPosY", Telecamera[i][LookPosY]);
  572.         dini_FloatSet(filetelecamera, "LookPosZ", Telecamera[i][LookPosZ]);
  573.         dini_IntSet(filetelecamera, "Interior", Telecamera[telecameraid][Interior]);
  574.         dini_IntSet(filetelecamera, "VirtualWorld", Telecamera[telecameraid][VirtualWorld]);
  575.         dini_BoolSet(filetelecamera, "Stato", Telecamera[telecameraid][Stato]);
  576.  
  577.         printf("Telecamera ID: %d Salvata. (Nome: %s)", telecameraid, Telecamera[telecameraid][Nome]);
  578.     }
  579.     return 1;
  580. }
  581.  
  582. stock SalvaTelecamere()
  583. {
  584.     for(new i = 0; i < MAX_TELECAMERE+1; i++)
  585.     {
  586.         new filetelecamera[256];
  587.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, i);
  588.         if(dini_Exists(filetelecamera))
  589.         {
  590.             dini_Set(filetelecamera, "Nome Telecamera", Telecamera[i][Nome]);
  591.             dini_FloatSet(filetelecamera, "TPosX", Telecamera[i][TPosX]);
  592.             dini_FloatSet(filetelecamera, "TPosY", Telecamera[i][TPosY]);
  593.             dini_FloatSet(filetelecamera, "TPosZ", Telecamera[i][TPosZ]);
  594.             dini_FloatSet(filetelecamera, "TRotX", Telecamera[i][TRotX]);
  595.             dini_FloatSet(filetelecamera, "TRotY", Telecamera[i][TRotY]);
  596.             dini_FloatSet(filetelecamera, "TRotZ", Telecamera[i][TRotZ]);
  597.             dini_FloatSet(filetelecamera, "LookPosX", Telecamera[i][LookPosX]);
  598.             dini_FloatSet(filetelecamera, "LookPosY", Telecamera[i][LookPosY]);
  599.             dini_FloatSet(filetelecamera, "LookPosZ", Telecamera[i][LookPosZ]);
  600.             dini_IntSet(filetelecamera, "Interior", Telecamera[i][Interior]);
  601.             dini_IntSet(filetelecamera, "VirtualWorld", Telecamera[i][VirtualWorld]);
  602.             dini_BoolSet(filetelecamera, "Stato", Telecamera[i][Stato]);
  603.  
  604.             printf("Telecamera ID: %d Salvata. (Nome: %s)", i, Telecamera[i][Nome]);
  605.         }
  606.     }
  607.     return 1;
  608. }
  609.  
  610. stock CaricaTelecamere()
  611. {
  612.     for(new i = 0; i < MAX_CELLE+1; i++)
  613.     {
  614.         new filetelecamera[256], str_telecameralabel[256];
  615.         format(filetelecamera, sizeof(filetelecamera), DIRECTORY_TELECAMERE, i);
  616.  
  617.         if(dini_Exists(filetelecamera))
  618.         {
  619.             strmid(Telecamera[i][Nome], dini_Get(filetelecamera, "Nome"), false, strlen(dini_Get(filetelecamera, "Nome")), 50);
  620.  
  621.             Telecamera[i][TPosX] = dini_Float(filetelecamera,"TPosX");
  622.             Telecamera[i][TPosY] = dini_Float(filetelecamera,"TPosY");
  623.             Telecamera[i][TPosZ] = dini_Float(filetelecamera,"TPosZ");
  624.  
  625.             Telecamera[i][TRotX] = dini_Float(filetelecamera,"TRotX");
  626.             Telecamera[i][TRotY] = dini_Float(filetelecamera,"TRotY");
  627.             Telecamera[i][TRotZ] = dini_Float(filetelecamera,"TRotZ");
  628.  
  629.             Telecamera[i][LookPosX] = dini_Float(filetelecamera,"LookPosX");
  630.             Telecamera[i][LookPosY] = dini_Float(filetelecamera,"LoookPosY");
  631.             Telecamera[i][LookPosZ] = dini_Float(filetelecamera,"LookPosZ");
  632.  
  633.             Telecamera[i][Interior] = dini_Int(filetelecamera,"Interior");
  634.             Telecamera[i][VirtualWorld] = dini_Int(filetelecamera,"VirtualWorld");
  635.  
  636.             Telecamera[i][Stato] = dini_Bool(filetelecamera,"Stato");
  637.  
  638.             format(str_telecameralabel, sizeof(str_telecameralabel, "Telecamera #%d\nStato: %s", (Telecamera[i][Stato] == true) ? ("{D3D3D3}Attiva{FFFFFF}") : ("{FF0000}Disattivata{FFFFFF}"));)
  639.             Telecamera[i][LabelID] = Create3DTextLabel(str_cellalabel, -1, Telecamera[i][TPosX], Telecamera[i][TPosY], Telecamera[i][TPosZ], 3.0, Telecamera[i][VirtualWorld], 0);
  640.             Telecamera[i][OggettoID] = CreateDynamicObject(1886, Telecamera[i][TPotX], Telecamera[i][TPosY], Telecamera[i][TPosZ], Telecamera[i][TRotX], Telecamera[i][TRotY], Telecamera[i][TRotZ], Telecamera[i][VirtualWorld], Telecamera[i][Interior]);
  641.            
  642.  
  643.             printf("Telecamera ID: %d Caricato. (Nome: %s)", i, Telecamera[i][PlayerName]);
  644.         }
  645.     }
  646.     return 1;
  647. }
  648.  
  649. stock ResettaTelecamera(telecameraid)
  650. {
  651.     DestroyDynamicObject(Telecamera[telecameraid][OggettoID]);
  652.     Delete3DTextLabel(Telecamera[telecameraid][LabelID]);
  653.  
  654.     Telecamera[telecameraid][OggettoID] = 0;
  655.     Telecamera[telecameraid][LabelID] = 0;
  656.     Telecamera[telecameraid][TPosX] = 0.0;
  657.     Telecamera[telecameraid][TPosY] = 0.0;
  658.     Telecamera[telecameraid][TPosZ] = 0.0;
  659.     Telecamera[telecameraid][TRotX] = 0.0;
  660.     Telecamera[telecameraid][TRotY] = 0.0;
  661.     Telecamera[telecameraid][TRotZ] = 0.0;
  662.     Telecamera[idtelecamera][LookPosX] = 0.0;
  663.     Telecamera[idtelecamera][LookPosY] = 0.0;
  664.     Telecamera[idtelecamera][LookPosZ] = 0.0;
  665.     Telecamera[telecameraid][Interior] = 0;
  666.     Telecamera[telecameraid][VirtualWorld] = 0;
  667.     Telecamera[telecameraid][Stato] = true;
  668.  
  669.     format(Telecamera[telecameraid][Nome], 50, "");
  670.     return 1;
  671. }
  672. stock VerificaTelecamere(cellaid)
  673. {
  674.     new filetelecamere[256];
  675.     format(filetelecamere, sizeof(filetelecamere), DIRECTORY_TELECAMERE, telecamereid);
  676.     if(!dini_Exists(filetelecamere)) return 1;
  677.     else return 0;
  678. }
  679.  
  680. stock AudioStreamForPlayersInRange(soundurl [], Float: range, Float: x, Float: y, Float: z)
  681. {
  682.     foreach (nuovo i: Player)
  683.     {
  684.         if (Utente [i] [Loggato] == true && IsPlayerInRangeOfPoint (i, range, x, y, z))
  685.         {
  686.             PlayAudioStreamForPlayer (i, soundurl, x, y, z, range, 1);
  687.         }
  688.     }
  689.     ritorno 1;
  690. }
RAW Paste Data