Advertisement
Guest User

Sisterm porti

a guest
Apr 9th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.80 KB | None | 0 0
  1. /****************************************************************************************************************************************************************************
  2. *****************************************************************************************************************************************************************************
  3. *****************************************************************************************************************************************************************************
  4. ***********************************************************************__________________************************************************************************************
  5. **********************************************************************| Gate System |***********************************************************************************
  6. **********************************************************************| |***********************************************************************************
  7. **********************************************************************| By |***********************************************************************************
  8. **********************************************************************| BogadnFcV |***********************************************************************************
  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 BogdanFcV");
  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 BogdanFcV");
  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