Advertisement
Gireada

Sistem de Porit

Mar 30th, 2013
1,398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 15.80 KB | None | 0 0
  1. /****************************************************************************************************************************************************************************
  2. *****************************************************************************************************************************************************************************
  3. *****************************************************************************************************************************************************************************
  4. ***********************************************************************__________________************************************************************************************
  5. **********************************************************************|    Gate System   |***********************************************************************************
  6. **********************************************************************|                  |***********************************************************************************
  7. **********************************************************************|      By          |***********************************************************************************
  8. **********************************************************************|        Gireada   |***********************************************************************************
  9. **********************************************************************|                  |***********************************************************************************
  10. **********************************************************************|                  |***********************************************************************************
  11. **********************************************************************|                  |***********************************************************************************
  12. **********************************************************************|                  |***********************************************************************************
  13. **********************************************************************|                  |***********************************************************************************
  14. **********************************************************************---------------------************************************************************************************
  15. */
  16.  
  17. //Nu stergeti Creditele.
  18.  
  19. #include <a_samp>
  20. #include <dini>
  21. #include <zcmd>
  22. #include <sscanf2>
  23. #include <mSelection>
  24.  
  25. #define MAX_POARTA 100
  26.  
  27. new Poarta[MAX_POARTA];
  28. new porti = mS_INVALID_LISTID;
  29. new poartastatus[MAX_POARTA];
  30. new setinchisa[MAX_PLAYERS];
  31. new setdeschisa[MAX_PLAYERS];
  32. new editpoarta[MAX_PLAYERS];
  33. new Text3D:porttextlabel[1000];
  34.  
  35. forward LoadPoarta();
  36. forward SaveThisPoarta(poartaid);
  37. forward SendAdminMesaj(color,const string[]);
  38.  
  39. enum portaData
  40. {
  41.     ID,
  42.     Model,
  43.     Float:Timer,
  44.     Float:Inchisax,
  45.     Float:Inchisay,
  46.     Float:Inchisaz,
  47.     Float:Inchisarx,
  48.     Float:Inchisary,
  49.     Float:Inchisarz,
  50.     Float:Deschisax,
  51.     Float:Deschisay,
  52.     Float:Deschisaz,
  53.     Float:Deschisarx,
  54.     Float:Deschisarz,
  55.     Float:Deschisary,
  56. };
  57. new PoartaInfo[MAX_POARTA][portaData];
  58.  
  59. public OnFilterScriptInit()
  60. {
  61.     porti = LoadModelSelectionMenu("porti.txt");
  62.     LoadPoarta();
  63.     print("\n--------------------------------------");
  64.     print(" Sistem de Poarti by Gireada");
  65.     print("--------------------------------------\n");
  66.     return 1;
  67. }
  68.  
  69. public OnFilterScriptExit()
  70. {
  71.     return 1;
  72. }
  73.  
  74.  
  75. main()
  76. {
  77.     print("\n----------------------------------");
  78.     print(" Sistem de Poarti by Gireada");
  79.     print("----------------------------------\n");
  80. }
  81.  
  82.  
  83. CMD:createpoarta(playerid, params[])
  84. {
  85.     if(IsPlayerAdmin(playerid))
  86.     {
  87.         ShowModelSelectionMenu(playerid, porti, "Porti");
  88.     }
  89.     return 1;
  90. }
  91.  
  92. CMD:dpoarta(playerid, params[])
  93. {
  94.     new poartaid;
  95.     if(unformat(params, "i", poartaid))
  96.     {
  97.         SendClientMessage(playerid, 0xFF0000AA, "Usage: /dpoarta <idpoarta>");
  98.         return 1;
  99.     }
  100.     if(!IsValidObject(Poarta[poartaid]))
  101.     {
  102.         SendClientMessage(playerid, 0xFF0000AA, "Acea poarta nu exista");
  103.         return 1;
  104.     }
  105.     if(IsPlayerAdmin(playerid))
  106.     {
  107.         if(poartastatus[poartaid] == 0)
  108.         {
  109.             MoveObject(Poarta[poartaid], PoartaInfo[poartaid][Deschisax], PoartaInfo[poartaid][Deschisay], PoartaInfo[poartaid][Deschisarz], PoartaInfo[poartaid][Timer],\
  110.             PoartaInfo[poartaid][Deschisarx],PoartaInfo[poartaid][Deschisary], PoartaInfo[poartaid][Deschisarz]);
  111.             poartastatus[poartaid] = 1;
  112.         }
  113.         else if(poartastatus[poartaid] == 1)
  114.         {
  115.             MoveObject(Poarta[poartaid], PoartaInfo[poartaid][Inchisax], PoartaInfo[poartaid][Inchisay], PoartaInfo[poartaid][Inchisaz], PoartaInfo[poartaid][Timer],\
  116.             PoartaInfo[poartaid][Inchisarx],PoartaInfo[poartaid][Inchisary], PoartaInfo[poartaid][Inchisarz]);
  117.             poartastatus[poartaid] = 0;
  118.         }
  119.     }
  120.     else
  121.     {
  122.         if(IsPlayerInRangeOfPoint(playerid, 7.0, PoartaInfo[poartaid][Deschisax], PoartaInfo[poartaid][Deschisay], PoartaInfo[poartaid][Deschisaz]))
  123.         {
  124.             if(poartastatus[poartaid] == 0)
  125.             {
  126.                 MoveObject(Poarta[poartaid], PoartaInfo[poartaid][Deschisax], PoartaInfo[poartaid][Deschisay], PoartaInfo[poartaid][Deschisarz], PoartaInfo[poartaid][Timer],\
  127.                 PoartaInfo[poartaid][Deschisarx],PoartaInfo[poartaid][Deschisary], PoartaInfo[poartaid][Deschisarz]);
  128.                 poartastatus[poartaid] = 1;
  129.             }
  130.             else if(poartastatus[poartaid] == 1)
  131.             {
  132.                 MoveObject(Poarta[poartaid], PoartaInfo[poartaid][Inchisax], PoartaInfo[poartaid][Inchisay], PoartaInfo[poartaid][Inchisaz], PoartaInfo[poartaid][Timer],\
  133.                 PoartaInfo[poartaid][Inchisarx],PoartaInfo[poartaid][Inchisary], PoartaInfo[poartaid][Inchisarz]);
  134.                 poartastatus[poartaid] = 0;
  135.             }
  136.         }
  137.     }
  138.     return 1;
  139. }
  140.  
  141. CMD:setinchisa(playerid, params[])
  142. {
  143.     new poartaid, Float:x, Float:y, Float:z;
  144.     if(unformat(params, "i", poartaid))
  145.     {
  146.         SendClientMessage(playerid, 0xFF0000AA, "Usage: /setinchisa <idpoarta>");
  147.         return 1;
  148.     }
  149.     if(!IsValidObject(Poarta[poartaid]))
  150.     {
  151.         SendClientMessage(playerid, 0xFF0000AA, "Acea poarta nu exista");
  152.         return 1;
  153.     }
  154.    
  155.     if(IsPlayerAdmin(playerid))
  156.     {
  157.         GetObjectPos(Poarta[poartaid], x,y,z);
  158.         if(IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z))
  159.         {
  160.             setinchisa[playerid] = 1;
  161.             editpoarta[playerid] = poartaid;
  162.             poartastatus[poartaid] = 0;
  163.             EditObject(playerid, Poarta[poartaid]);
  164.         }
  165.         else
  166.         {
  167.             SendClientMessage(playerid, 0xFF0000AA, "Trebuie sa fii langa poarta");
  168.         }
  169.     }
  170.     else
  171.     {
  172.         SendClientMessage(playerid, 0xFF0000AA, "Trebuie sa fii admin RCON");
  173.     }
  174.     return 1;
  175. }
  176.  
  177. CMD:setdeschisa(playerid, params[])
  178. {
  179.     new poartaid, Float:x, Float:y, Float:z;
  180.     if(unformat(params, "i", poartaid))
  181.     {
  182.         SendClientMessage(playerid, 0xFF0000AA, "Usage: /setdeschisa <idpoarta>");
  183.         return 1;
  184.     }
  185.     if(!IsValidObject(Poarta[poartaid]))
  186.     {
  187.         SendClientMessage(playerid, 0xFF0000AA, "Acea poarta nu exista");
  188.         return 1;
  189.     }
  190.  
  191.     if(IsPlayerAdmin(playerid))
  192.     {
  193.         GetObjectPos(Poarta[poartaid], x,y,z);
  194.         if(IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z))
  195.         {
  196.             setdeschisa[playerid] = 1;
  197.             editpoarta[playerid] = poartaid;
  198.             poartastatus[poartaid] = 1;
  199.             EditObject(playerid, Poarta[poartaid]);
  200.         }
  201.         else
  202.         {
  203.             SendClientMessage(playerid, 0xFF0000AA, "Trebuie sa fii langa poarta");
  204.         }
  205.     }
  206.     else
  207.     {
  208.         SendClientMessage(playerid, 0xFF0000AA, "Trebuie sa fii admin RCON");
  209.     }
  210.     return 1;
  211. }
  212.  
  213.  
  214. public LoadPoarta()
  215. {
  216.     new file[50], string2[256];
  217.     for(new idx=1;idx<MAX_POARTA;idx++)
  218.     {
  219.         format(file, sizeof(file),"Porti/%d.ini", idx);
  220.         if(dini_Exists(file))
  221.         {
  222.             PoartaInfo[idx][ID] = dini_Int(file,"ID");
  223.             PoartaInfo[idx][Model] = dini_Int(file,"Model");
  224.             PoartaInfo[idx][Timer] = dini_Float(file,"Timer");
  225.             PoartaInfo[idx][Inchisax] = dini_Float(file,"Inchisax");
  226.             PoartaInfo[idx][Inchisay] = dini_Float(file,"Inchisay");
  227.             PoartaInfo[idx][Inchisaz] = dini_Float(file,"Inchisaz");
  228.             PoartaInfo[idx][Inchisarx] = dini_Float(file,"Inchisarx");
  229.             PoartaInfo[idx][Inchisary] = dini_Float(file,"Inchisary");
  230.             PoartaInfo[idx][Inchisarz] = dini_Float(file,"Inchisarz");
  231.             PoartaInfo[idx][Deschisax] = dini_Float(file,"Deschisax");
  232.             PoartaInfo[idx][Deschisay] = dini_Float(file,"Deschisay");
  233.             PoartaInfo[idx][Deschisaz] = dini_Float(file,"Deschisaz");
  234.             PoartaInfo[idx][Deschisarx] = dini_Float(file,"Deschisarx");
  235.             PoartaInfo[idx][Deschisary] = dini_Float(file,"Deschisary");
  236.             PoartaInfo[idx][Deschisarz] = dini_Float(file,"Deschisarz");
  237.             Poarta[idx] = CreateObject(PoartaInfo[idx][Model], PoartaInfo[idx][Inchisax], PoartaInfo[idx][Inchisay], PoartaInfo[idx][Inchisaz], PoartaInfo[idx][Inchisarx], PoartaInfo[idx][Inchisary], PoartaInfo[idx][Inchisarz]);
  238.             poartastatus[idx] = 0;
  239.             format(string2, sizeof(string2), " Poarta: %d",idx);
  240.             porttextlabel[idx] = Create3DTextLabel(string2, 0x7FFF00FF, PoartaInfo[idx][Inchisax], PoartaInfo[idx][Inchisay], PoartaInfo[idx][Inchisaz], 20.0, 0, 0);
  241.         }
  242.     }
  243.     return 1;
  244. }
  245.  
  246. public SaveThisPoarta(poartaid)
  247. {
  248.     new file2[50];
  249.     format(file2, sizeof(file2),"Porti/%d.ini", poartaid);
  250.     if(dini_Exists(file2))
  251.     {
  252.         dini_IntSet(file2,"ID",PoartaInfo[poartaid][ID]);
  253.         dini_IntSet(file2,"Model",PoartaInfo[poartaid][Model]);
  254.         dini_FloatSet(file2,"Timer",PoartaInfo[poartaid][Timer]);
  255.         dini_FloatSet(file2,"Inchisax",PoartaInfo[poartaid][Inchisax]);
  256.         dini_FloatSet(file2,"Inchisay",PoartaInfo[poartaid][Inchisay]);
  257.         dini_FloatSet(file2,"Inchisaz",PoartaInfo[poartaid][Inchisaz]);
  258.         dini_FloatSet(file2,"Inchisarx",PoartaInfo[poartaid][Inchisarx]);
  259.         dini_FloatSet(file2,"Inchisary",PoartaInfo[poartaid][Inchisary]);
  260.         dini_FloatSet(file2,"Inchisarz",PoartaInfo[poartaid][Inchisarz]);
  261.         dini_FloatSet(file2,"Inchisarz",PoartaInfo[poartaid][Inchisarz]);
  262.         dini_FloatSet(file2,"Deschisax",PoartaInfo[poartaid][Deschisax]);
  263.         dini_FloatSet(file2,"Deschisay",PoartaInfo[poartaid][Deschisay]);
  264.         dini_FloatSet(file2,"Deschisaz",PoartaInfo[poartaid][Deschisaz]);
  265.         dini_FloatSet(file2,"Deschisarx",PoartaInfo[poartaid][Deschisarx]);
  266.         dini_FloatSet(file2,"Deschisary",PoartaInfo[poartaid][Deschisary]);
  267.         dini_FloatSet(file2,"Deschisarz",PoartaInfo[poartaid][Deschisarz]);
  268.     }
  269.     else if(!dini_Exists(file2))
  270.     {
  271.         dini_Create(file2);
  272.         dini_IntSet(file2,"ID",PoartaInfo[poartaid][ID]);
  273.         dini_IntSet(file2,"Model",PoartaInfo[poartaid][Model]);
  274.         dini_FloatSet(file2,"Timer",PoartaInfo[poartaid][Timer]);
  275.         dini_FloatSet(file2,"Inchisax",PoartaInfo[poartaid][Inchisax]);
  276.         dini_FloatSet(file2,"Inchisay",PoartaInfo[poartaid][Inchisay]);
  277.         dini_FloatSet(file2,"Inchisaz",PoartaInfo[poartaid][Inchisaz]);
  278.         dini_FloatSet(file2,"Inchisarx",PoartaInfo[poartaid][Inchisarx]);
  279.         dini_FloatSet(file2,"Inchisary",PoartaInfo[poartaid][Inchisary]);
  280.         dini_FloatSet(file2,"Inchisarz",PoartaInfo[poartaid][Inchisarz]);
  281.         dini_FloatSet(file2,"Inchisarz",PoartaInfo[poartaid][Inchisarz]);
  282.         dini_FloatSet(file2,"Deschisax",PoartaInfo[poartaid][Deschisax]);
  283.         dini_FloatSet(file2,"Deschisay",PoartaInfo[poartaid][Deschisay]);
  284.         dini_FloatSet(file2,"Deschisaz",PoartaInfo[poartaid][Deschisaz]);
  285.         dini_FloatSet(file2,"Deschisarx",PoartaInfo[poartaid][Deschisarx]);
  286.         dini_FloatSet(file2,"Deschisary",PoartaInfo[poartaid][Deschisary]);
  287.         dini_FloatSet(file2,"Deschisarz",PoartaInfo[poartaid][Deschisarz]);
  288.     }
  289.     return 1;
  290.  
  291. }
  292.  
  293. public OnPlayerModelSelection(playerid, response, listid, modelid)
  294. {
  295.     new Float:x, Float:y, Float:z, string[700], name[MAX_PLAYER_NAME], file2[100], string2[256];
  296.     GetPlayerName(playerid, name, sizeof(name));
  297.     if(listid == porti)
  298.     {
  299.         if(response)
  300.         {
  301.             for(new i=1;i<MAX_PLAYERS; i++)
  302.             {
  303.                 format(file2, sizeof(file2),"Porti/%d.ini", i);
  304.                 if(!dini_Exists(file2))
  305.                 {
  306.                     GetPlayerPos(playerid, x,y,z);
  307.                     editpoarta[playerid] = i;
  308.                     setdeschisa[playerid] = 1;
  309.                     PoartaInfo[i][ID] = i;
  310.                     PoartaInfo[i][Model] = modelid;
  311.                     PoartaInfo[i][Inchisax] = x+2;
  312.                     PoartaInfo[i][Inchisay] = y;
  313.                     PoartaInfo[i][Inchisaz] = z;
  314.                     PoartaInfo[i][Timer] = 4.00;
  315.                     Poarta[i] = CreateObject(modelid, x+2, y, z,\
  316.                             0, 0, 0);
  317.                     format(string, sizeof(string), "Admin-ul %s a creiat poarta %d",name,i);
  318.                     SendAdminMesaj(0xFFFFFFFF,string); SaveThisPoarta(i); EditObject(playerid, Poarta[i]); SendClientMessage(playerid, 0xFF0000FF, "Seteaza poarta cand e deschisa");
  319.                     SendClientMessage(playerid, 0xFF0000FF, "[HINT] Foloseste Space pentru a misca camera");
  320.                     porttextlabel[editpoarta[playerid]] = Create3DTextLabel(string2, 0x7FFF00FF, PoartaInfo[editpoarta[playerid]][Inchisax], PoartaInfo[editpoarta[playerid]][Inchisay], PoartaInfo[editpoarta[playerid]][Inchisaz], 20.0, 0, 0);
  321.                     break;
  322.                 }
  323.             }
  324.         }
  325.         else SendClientMessage(playerid, 0xFF0000FF, "Altadata");
  326.         return 1;
  327.  
  328.     }
  329.     return 1;
  330. }
  331.  
  332. public SendAdminMesaj(color,const string[])
  333. {
  334.     for(new i = 0; i < MAX_PLAYERS; i++)
  335.     {
  336.         if(IsPlayerConnected(i))
  337.         {
  338.             if(IsPlayerAdmin(i))
  339.             {
  340.                 SendClientMessage(i, color, string);
  341.                 printf("%s", string);
  342.             }
  343.         }
  344.     }
  345.     return 1;
  346. }
  347.  
  348. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  349. {
  350.     new Float:oldX, Float:oldY, Float:oldZ,
  351.         Float:oldRotX, Float:oldRotY, Float:oldRotZ;
  352.     GetObjectPos(objectid, oldX, oldY, oldZ);
  353.     GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  354.     new string2[256];
  355.     if(response == EDIT_RESPONSE_FINAL)
  356.     {
  357.         if(setinchisa[playerid] == 1)
  358.         {
  359.             SetObjectPos(objectid, fX, fY, fZ);
  360.             SetObjectRot(objectid, fRotX, fRotY, fRotZ);
  361.             PoartaInfo[editpoarta[playerid]][Inchisax] = fX;
  362.             PoartaInfo[editpoarta[playerid]][Inchisay] = fY;
  363.             PoartaInfo[editpoarta[playerid]][Inchisaz] = fZ;
  364.             PoartaInfo[editpoarta[playerid]][Inchisarx] = fRotX;
  365.             PoartaInfo[editpoarta[playerid]][Inchisary] = fRotY;
  366.             PoartaInfo[editpoarta[playerid]][Inchisarz] = fRotZ;
  367.             setinchisa[playerid] = 0; SaveThisPoarta(editpoarta[playerid]);
  368.             poartastatus[editpoarta[playerid]] = 0;
  369.             SendClientMessage(playerid, 0xFF0000FF, "Ai setat si cand e inchisa? Daca nu foloseste /setdeschisa");
  370.             Delete3DTextLabel(porttextlabel[editpoarta[playerid]]);
  371.             porttextlabel[editpoarta[playerid]] = Create3DTextLabel(string2, 0x7FFF00FF, PoartaInfo[editpoarta[playerid]][Inchisax], PoartaInfo[editpoarta[playerid]][Inchisay], PoartaInfo[editpoarta[playerid]][Inchisaz], 20.0, 0, 0);
  372.         }
  373.         if(setdeschisa[playerid] == 1)
  374.         {
  375.             SetObjectPos(objectid, fX, fY, fZ);
  376.             SetObjectRot(objectid, fRotX, fRotY, fRotZ);
  377.             PoartaInfo[editpoarta[playerid]][Deschisax] = fX;
  378.             PoartaInfo[editpoarta[playerid]][Deschisay] = fY;
  379.             PoartaInfo[editpoarta[playerid]][Deschisaz] = fZ;
  380.             PoartaInfo[editpoarta[playerid]][Deschisarx] = fRotX;
  381.             PoartaInfo[editpoarta[playerid]][Deschisary] = fRotY;
  382.             PoartaInfo[editpoarta[playerid]][Deschisarz] = fRotZ;
  383.             setdeschisa[playerid] = 0; SaveThisPoarta(editpoarta[playerid]);
  384.             poartastatus[editpoarta[playerid]] = 1;
  385.             SendClientMessage(playerid, 0xFF0000FF, "Ai setat si cand e inchisa? Daca nu foloseste /setinchisa");
  386.         }
  387.     }
  388.     if(response == EDIT_RESPONSE_CANCEL)
  389.     {
  390.         if(setinchisa[playerid] == 1)
  391.         {
  392.             SetObjectPos(objectid, oldX, oldY, oldZ);
  393.             SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  394.         }
  395.         if(setdeschisa[playerid] == 1)
  396.         {
  397.             SetObjectPos(objectid, oldX, oldY, oldZ);
  398.             SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  399.         }
  400.     }
  401. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement