Advertisement
Guest User

[FS] Criar Portao IN-GAME COM SENHA

a guest
Aug 29th, 2022
897
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.82 KB | None | 0 0
  1.  
  2. /*
  3. ======================================================
  4. Sitema Criado Por: SkayBR, CriarPortoes IM-GAME
  5. Seja Um bom Menino e nao retire os Creditos
  6. ======================================================
  7.  
  8. */
  9.  
  10. #include < a_samp >
  11. #include < DOF2 >
  12. #include < zcmd >
  13. #include < sscanf2 >
  14.  
  15. #define ZZZ 0x00BFFFFF
  16. #define AAA 0xFFFF00FF
  17. #define CCC 0xD3D3D3FF
  18. #define VVV 0xFF0000FF
  19. #define EEE 0x00FF00FF
  20. #define RRR 0xFF1493FF
  21. #define XXX 0xFFB6C1FF
  22. #define GGG 0x00FF7FFF
  23. #define RRX 0xFF69B4FF
  24. #define VVX 0xFF4500FF
  25. #define FFF 0x98FB98FF
  26. #define BBB 0xFFFFFFFF
  27. #define DIALOG_PORTAO 8765
  28.  
  29. #define TextoPortao "{00BFFF}Portao: {FFFFFF}ID: %d\n{00BFFF}Buzine ou /Senhap"
  30.  
  31. #define Msg SendClientMessage
  32.  
  33. #define MAX_PORTOES 1000
  34.  
  35. enum infop
  36. {
  37. Senha[24],
  38. Fechado,
  39. Grafite,
  40. Recente,
  41. Text3D:Texto,
  42. Float:Xp,
  43. Float:Yp,
  44. Float:Zp,
  45. Float:Xr,
  46. Float:Yr,
  47. Float:Zr
  48. }
  49. new Portao[MAX_PORTOES][infop], Str[248];
  50.  
  51. public OnFilterScriptExit()
  52. {
  53. DOF2_Exit();
  54. return 1;
  55. }
  56. public OnFilterScriptInit()
  57. {
  58. CarregarPortoes();
  59. return 1;
  60. }
  61. public OnPlayerConnect(playerid)
  62. {
  63. Msg(playerid, VVV, "[SkayBR - Scriper]: Sistema de criar portoes IM-GAME");
  64. return 1;
  65. }
  66. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  67. {
  68. if(dialogid == DIALOG_PORTAO)
  69. {
  70. if(response)
  71. {
  72. if(!strlen(inputtext))
  73. {
  74. Msg(playerid, CCC, "INFO: Voce nao digitou a senha!");
  75. ShowPlayerDialog(playerid, DIALOG_PORTAO, 1,"Portao", "\nDigite a senha do portao","OK", "Sair");
  76. }
  77. else // OU
  78. {
  79. new ID = GetPVarInt(playerid, "PortaoID");
  80. if(strcmp(inputtext, Portao[ID][Senha], true) == 0)
  81. {
  82. if(Portao[ID][Recente]) return Msg(playerid, CCC, "INFO: Este portao foi abrdo recentemente, aguarde 5 segundo para abri-lo");
  83. if(Portao[ID][Fechado]) return Msg(playerid, CCC, "INFO: Portao ja esta aberto!");
  84. AbrirPortao(ID, playerid);
  85. }
  86. else // OU
  87. {
  88. ShowPlayerDialog(playerid, DIALOG_PORTAO, 1,"Portao", "Senha Errada!\nDigite a senha do portao","OK", "Sair");
  89. }
  90. }
  91. }
  92. }
  93. if(dialogid == DIALOG_PORTAO+1)
  94. {
  95. if(response)
  96. {
  97. new ID = GetPVarInt(playerid, "ID");
  98. switch(listitem)
  99. {
  100. case 0:
  101. {
  102. format(Str,sizeof(Str),"Senha Atual: [%s]\nDigite a nova senha do portao!", Portao[ID][Senha]);
  103. ShowPlayerDialog(playerid, DIALOG_PORTAO+2, 1, "Senha Portao", Str, "OK", "Cancelar");
  104. }
  105. case 1:
  106. {
  107. if(IsPlayerInRangeOfPoint(playerid, 8.0, Portao[ID][Xp], Portao[ID][Yp], Portao[ID][Zp]))
  108. {
  109. EditObject(playerid, Portao[ID][Grafite]);
  110. }
  111. else Msg(playerid, CCC, "INFO: Voce deve estar perto do portao para usar a funcao!");
  112. }
  113. case 2:
  114. {
  115. SetPlayerPos(playerid, Portao[ID][Xp], Portao[ID][Yp]+0.5, Portao[ID][Zp]);
  116. format(Str,sizeof(Str),"[Portao}: Voce foi ate o portao: [%d]", ID);
  117. Msg(playerid, XXX, Str);
  118. }
  119. case 3:
  120. {
  121. DOF2_RemoveFile(PastaPortoes(ID));
  122. Delete3DTextLabel(Portao[ID][Texto]);
  123. DestroyObject(Portao[ID][Grafite]);
  124. format(Str,sizeof(Str),"[Portao}: Voce deletou o portao: [%d]", ID);
  125. Msg(playerid, VVV, Str);
  126. }
  127. }
  128. }
  129. }
  130. if(dialogid == DIALOG_PORTAO+2)
  131. {
  132. if(response)
  133. {
  134. new ID = GetPVarInt(playerid, "ID");
  135. if(!strlen(inputtext))
  136. {
  137.  
  138. Msg(playerid, CCC, "INFO: Voce nao digitou a nova senha!");
  139. format(Str,sizeof(Str),"Senha Atual: [%s]\nDigite a nova senha do portao!", Portao[ID][Senha]);
  140. ShowPlayerDialog(playerid, DIALOG_PORTAO+2, 1, "Senha Portao", Str, "OK", "Cancelar");
  141. }
  142. else
  143. {
  144. format(Str,sizeof(Str),"[Portao]: Voce mudou a senha do portao [%d] para: %s", ID, inputtext);
  145. Msg(playerid, GGG, Str);
  146. format(Portao[ID][Senha], 24, inputtext);
  147. SalvarPortaoDados(ID);
  148. }
  149. }
  150. }
  151. return 1;
  152. }
  153. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ )
  154. {
  155. SetObjectPos ( objectid,fX,fY,fZ );
  156. SetObjectRot ( objectid,fRotX,fRotY,fRotZ);
  157. if(response == EDIT_RESPONSE_FINAL)
  158. {
  159. SalvarPortaoPosicao(playerid, objectid);
  160. }
  161. }
  162. stock CarregarPortoes()
  163. {
  164. for( new i = 1; i < MAX_PORTOES; i++)
  165. {
  166. if(DOF2_FileExists(PastaPortoes(i)))
  167. {
  168. CriarPortao(i);
  169. }
  170. }
  171. return 1;
  172. }
  173.  
  174. CMD:criarportao(playerid, params[])
  175. {
  176. if(!IsPlayerAdmin(playerid)) return Msg(playerid, VVV, "INFO: Voce nao pode usar este comando, logue na RCON");
  177. new pass[24], Float:Pos[3];
  178. if(sscanf(params,"s[24]", pass)) return Msg(playerid,CCC,"INFO: Use /Criarportao [Senha]");
  179. for( new i = 1; i < MAX_PORTOES; i++)
  180. {
  181. if(!DOF2_FileExists(PastaPortoes(i)))
  182. {
  183. GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]);
  184. DOF2_CreateFile(PastaPortoes(i));
  185. DOF2_SetString(PastaPortoes(i),"Senha", pass);
  186. DOF2_SetFloat (PastaPortoes(i),"PosX", Pos[0]);
  187. DOF2_SetFloat (PastaPortoes(i),"PosY", Pos[1]+1);
  188. DOF2_SetFloat (PastaPortoes(i),"PosZ", Pos[2]);
  189. DOF2_SetFloat (PastaPortoes(i),"RotX", 0);
  190. DOF2_SetFloat (PastaPortoes(i),"RotY", 0);
  191. DOF2_SetFloat (PastaPortoes(i),"RotZ", 0);
  192. format(Str,sizeof(Str),"[Portao}: Voce criou um portao novo ID: %d com a senha: %s", i, pass);
  193. Msg(playerid, EEE, Str);
  194. DOF2_SaveFile();CriarPortao(i); break;
  195. }
  196. }
  197. return 1;
  198. }
  199. CMD:senhap(playerid)
  200. {
  201. if(!ChecarPortao(playerid)) return Msg(playerid, CCC, "INFO: Voce nao esta perto de um portao!");
  202. SetPVarInt(playerid, "PortaoID", ChecarPortao(playerid));
  203. if(Portao[ChecarPortao(playerid)][Recente]) return Msg(playerid, CCC, "INFO: Portao este foi aberdo recentemente, aguarde 5 segundo para abri-lo");
  204. if(Portao[ChecarPortao(playerid)][Fechado]) return Msg(playerid, CCC, "INFO: Portao ja esta aberto!");
  205. ShowPlayerDialog(playerid, DIALOG_PORTAO, 1, "Portao", "\nDigite a senha do portao","OK", "Sair");
  206. return 1;
  207. }
  208. CMD:portao(playerid, params[])
  209. {
  210. if(!IsPlayerAdmin(playerid)) return Msg(playerid, VVV, "INFO: Voce nao pode usar este comando, logue na RCON");
  211. new ID;
  212. if(sscanf(params,"d", ID)) return Msg(playerid, CCC, "INFO: Use /Portao [ID]");
  213. if(DOF2_FileExists(PastaPortoes(ID)))
  214. {
  215. format(Str,sizeof(Str),"Portao: %d", ID);
  216. ShowPlayerDialog(playerid, DIALOG_PORTAO+1, 2, Str,
  217. ">> Mudar Senha\n>> Editar Portao\n>> Ir Portao\n>> Deletar Portao", "Selecionar", "Sair");
  218. SetPVarInt(playerid, "ID", ID);
  219. }
  220. else
  221. {
  222. format(Str,sizeof(Str),"INFO: Portao [%d] nao existe", ID);
  223. Msg(playerid, CCC, Str);
  224. }
  225. return 1;
  226. }
  227. stock SalvarPortaoDados(ID)
  228. {
  229. DOF2_SetString(PastaPortoes(ID),"Senha", Portao[ID][Senha]);
  230. DOF2_SaveFile();
  231. return 1;
  232. }
  233. stock SalvarPortaoPosicao(playerid, objectid)
  234. {
  235. for( new i = 1; i < MAX_PORTOES; i++)
  236. {
  237. if(Portao[i][Grafite] == objectid)
  238. {
  239. GetObjectPos(Portao[i][Grafite], Portao[i][Xp], Portao[i][Yp], Portao[i][Zp]);
  240. GetObjectRot(Portao[i][Grafite], Portao[i][Xr], Portao[i][Yr], Portao[i][Zr]);
  241. DOF2_SetFloat (PastaPortoes(i),"PosX", Portao[i][Xp]);
  242. DOF2_SetFloat (PastaPortoes(i),"PosY", Portao[i][Yp]);
  243. DOF2_SetFloat (PastaPortoes(i),"PosZ", Portao[i][Zp]);
  244. DOF2_SetFloat (PastaPortoes(i),"RotX", Portao[i][Xr]);
  245. DOF2_SetFloat (PastaPortoes(i),"RotY", Portao[i][Yr]);
  246. DOF2_SetFloat (PastaPortoes(i),"RotZ", Portao[i][Zr]);
  247. DOF2_SaveFile(); Delete3DTextLabel(Portao[i][Texto]);
  248. CriarTextoPortao(i);
  249. format(Str,sizeof(Str),"[Portao}: Voce editou a posicao do portao: [%d]", i);
  250. Msg(playerid, GGG, Str);break;
  251. }
  252. }
  253. return 1;
  254. }
  255. stock CriarPortao(ID)
  256. {
  257. format(Portao[ID][Senha], 24, DOF2_GetString(PastaPortoes(ID),"Senha"));
  258. Portao[ID][Xp] = DOF2_GetFloat(PastaPortoes(ID),"PosX");
  259. Portao[ID][Yp] = DOF2_GetFloat(PastaPortoes(ID),"PosY");
  260. Portao[ID][Zp] = DOF2_GetFloat(PastaPortoes(ID),"PosZ");
  261. Portao[ID][Xr] = DOF2_GetFloat(PastaPortoes(ID),"RotX");
  262. Portao[ID][Yr] = DOF2_GetFloat(PastaPortoes(ID),"RotY");
  263. Portao[ID][Zr] = DOF2_GetFloat(PastaPortoes(ID),"RotZ");
  264. /*----------------[ Objecto do Portao ]----------------*/
  265. Portao[ID][Grafite] = CreateObject(980,
  266. Portao[ID][Xp],
  267. Portao[ID][Yp],
  268. Portao[ID][Zp],
  269. Portao[ID][Xr],
  270. Portao[ID][Yr],
  271. Portao[ID][Zr]);
  272. /*-----------------------------------------------------*/
  273. CriarTextoPortao(ID);
  274. /*-----------------------------------------------------*/
  275. return 1;
  276. }
  277. stock ChecarPortao(playerid)
  278. {
  279. for( new i = 1; i < MAX_PORTOES; i++)
  280. {
  281. if(IsPlayerInRangeOfPoint(playerid, 4.0, Portao[i][Xp], Portao[i][Yp], Portao[i][Zp]))
  282. {
  283. return i;
  284. }
  285. }
  286. return 0;
  287. }
  288. stock AbrirPortao(ID, playerid)
  289. {
  290. MoveObject(Portao[ID][Grafite],
  291. Portao[ID][Xp],
  292. Portao[ID][Yp],
  293. Portao[ID][Zp]-6, 5.5);
  294. SetTimerEx("FecharPortao", 5000, false, "i",Portao[ID][Grafite]);
  295. Portao[ID][Fechado] = true;
  296. Delete3DTextLabel(Portao[ID][Texto]);
  297. GameTextForPlayer(playerid, "~w~Portoao ~g~Aberto", 1000, 4);
  298. return 1;
  299. }
  300. forward FecharPortao(Portaoid); public FecharPortao(Portaoid)
  301. {
  302. for( new i = 1; i < MAX_PORTOES; i++)
  303. {
  304. if(Portaoid == Portao[i][Grafite])
  305. {
  306. MoveObject(Portao[i][Grafite],
  307. Portao[i][Xp],
  308. Portao[i][Yp],
  309. Portao[i][Zp], 5.5);
  310. Portao[i][Fechado] = false;
  311. Portao[i][Recente] = true;
  312. SetTimerEx("RecentePortao", 5000, false, "i",Portao[i][Grafite]);
  313. CriarTextoPortao(i);
  314. break;
  315. }
  316. }
  317. return 1;
  318. }
  319. forward RecentePortao(Portaoid); public RecentePortao(Portaoid)
  320. {
  321. for( new i = 1; i < MAX_PORTOES; i++)
  322. {
  323. if(Portaoid == Portao[i][Grafite])
  324. {
  325. Portao[i][Recente] = false; break;
  326. }
  327. }
  328. return 1;
  329. }
  330. stock CriarTextoPortao(ID)
  331. {
  332. format(Str, 70, TextoPortao, ID);
  333. Portao[ID][Texto] = Create3DTextLabel(Str, BBB,
  334. Portao[ID][Xp],
  335. Portao[ID][Yp],
  336. Portao[ID][Zp], 20.0,0);
  337. return 1;
  338. }
  339. //---------------[S][K][A][Y][B][R]----------------//
  340. stock PastaPortoes(ID)
  341. {
  342. new string[100];
  343. format(string, 100, "Portoes/%d.ini", ID);
  344. return string;
  345. }
  346.  
  347.  
  348.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement