Advertisement
Guest User

[FilterScript] Criação de Portão

a guest
Oct 21st, 2012
7,827
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.73 KB | None | 0 0
  1.  
  2. #include a_samp
  3. #include zcmd
  4.  
  5.  
  6.  
  7.  
  8. /*---- DEFINES ----*/
  9.  
  10. #define DIALOG_NOME 9001
  11. #define DIALOG_TIPO 9002
  12. #define DIALOG_NOMECOMANDO 9003
  13. #define DIALOG_TIPO2 9004
  14. #define DIALOG_CIMABAIXO 9005
  15. #define DIALOG_TIPO_COMANDO 9006
  16. #define DIALOG_TESTE_CIMABAIXO 9007
  17. #define VelocidadeRotacao 0.7 //Normal 0.6
  18. #define VelocidadeSobeDesce 0.05 //Normal 0.07
  19. #define VelocidadeDirecao 0.07 //Normal 0.07
  20.  
  21.  
  22.  
  23. /*----- Variaveis -----*/
  24. new objeto, testando;
  25. new timer;
  26. new NoAnim[5];
  27. new NomePortao[64];
  28. new NomeComando[64];
  29. new TipoPortao;
  30. new CimaBaixo;
  31. new Editando = 0;
  32. new TipoComando;
  33.  
  34.  
  35.  
  36. public OnFilterScriptInit()
  37. {
  38. print(#---F-I-L-T-E-R---S-C-R-I-P-T---);
  39. print(#\n------Criação de portões-------);
  40. print(#----------By: ForT------------\n);
  41. return 1;
  42. }
  43.  
  44. CMD:testar(playerid)
  45. {
  46. if(Editando == 0)return SendClientMessage(playerid, 0xFF0000, #Ninguem está fazendo um portão!);
  47. if(testando > 0)return SendClientMessage(playerid, 0xFF0000, #Tem alguem testando o portão!);
  48. ShowPlayerDialog(playerid,DIALOG_TESTE_CIMABAIXO, DIALOG_STYLE_MSGBOX, #Escolha uma opção, #Mover o portão para cima ou para baixo?, #Cima, #Baixo);
  49. return true;
  50. }
  51. CMD:salvarportao(playerid)
  52. {
  53. if(Editando == 0)return SendClientMessage(playerid, 0xFF0000, #Ninguem está fazendo um portão!);
  54. ShowPlayerDialog(playerid,DIALOG_NOME,DIALOG_STYLE_INPUT,#Escolha o nome do portão, "Digite o nome do portão\n{FF0000}OBS: NÃO USE ACENTOS",#Continuar, #sair);
  55. return true;
  56. }
  57.  
  58.  
  59. CMD:sairportao(playerid)
  60. {
  61. if(Editando == 0)return SendClientMessage(playerid, 0xFF0000, #Ninguem está fazendo um portão!);
  62. KillTimer(timer);
  63. DestroyObject(objeto);
  64. Editando = 0;
  65. ClearAnimations(playerid);
  66. RemovePlayerMapIcon(playerid, 80);
  67. SendClientMessage(playerid, 0x2641FEFF, #Você cancelou a edição do portão);
  68. return true;
  69. }
  70.  
  71.  
  72. CMD:criarportao(playerid)
  73. {
  74. if(Editando > 0)return SendClientMessage(playerid, 0xFF0000, #Tem alguem fazendo um portão!);
  75. ShowPlayerDialog(playerid,DIALOG_TIPO,DIALOG_STYLE_LIST,#Escolha o tipo do portão, #ID: 980\nID: 969\nID: 971\nID: 975\nID: 976\nID: 988\nID: 989\nID: 2990,#Continuar, #sair);
  76. return true;
  77. }
  78.  
  79.  
  80. CMD:tipo(playerid)
  81. {
  82. if(Editando == 0)return SendClientMessage(playerid, 0xFF0000, #Ninguem está fazendo um portão!);
  83. ShowPlayerDialog(playerid,DIALOG_TIPO2,DIALOG_STYLE_LIST,#Escolha o tipo do portão, #ID: 980\nID: 969\nID: 971\nID: 975\nID: 976\nID: 988\nID: 989\nID: 2990,#Continuar, #sair);
  84. return true;
  85. }
  86.  
  87.  
  88. CMD:comandos(playerid)
  89. {
  90. SendClientMessage(playerid, 0xF6F600AA, #|------------------------| AJUDA PORTÃO |------------------------|);
  91. SendClientMessage(playerid, 0xFF6347AA, #ATENÇÃO: PARA PODER MOVER O PORTÃO É PRECISO APERTAR A LETRA ' C ');
  92. SendClientMessage(playerid, 0xF6F600AA, "Controle a POSIÇÃO do portão com os botões de direcionamento (cima, baixo, direita e esquerda)");
  93. SendClientMessage(playerid, 0xF6F600AA, #Mude a ROTAÇÃO com os numeros 6 e 4 ! Mude a ALTURA usando Y e N);
  94. SendClientMessage(playerid, 0xF6F600AA, #Faça um novo portão usando /criarportao);
  95. SendClientMessage(playerid, 0xF6F600AA, #Teste o portão usando o comando /testar);
  96. SendClientMessage(playerid, 0xF6F600AA, #Mude o modelo do portão usando /tipo);
  97. SendClientMessage(playerid, 0xF6F600AA, #Cancele a edição do portão usando /sairportao);
  98. SendClientMessage(playerid, 0xF6F600AA, #Salve o portão usando /salvarportao ! Segure spaço para aumentar a velocidade);
  99. return true;
  100. }
  101.  
  102.  
  103.  
  104. public OnPlayerConnect(playerid)
  105. {
  106. SendClientMessage(playerid, 0xF6F600AA, #|------| Criador de portão |------|);
  107. SendClientMessage(playerid, 0xF6F600AA, #Para ver os comandos USE: /comandos);
  108. return true;
  109. }
  110.  
  111.  
  112. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  113. {
  114. if(dialogid == DIALOG_NOME)
  115. {
  116. if(!response)return true;
  117. new NaoPode[128];
  118. strmid(NaoPode,inputtext,0,strlen(inputtext),128);
  119. for(new letra=0;letra<128; ++letra)
  120. {
  121. if(NaoPode[letra]=='/' || NaoPode[letra]=='ã' ||
  122. NaoPode[letra]=='ó' || NaoPode[letra]=='á' || NaoPode[letra]=='ç' ||
  123. NaoPode[letra]=='â' || NaoPode[letra]=='í' || NaoPode[letra]=='ú' ||
  124. NaoPode[letra]=='?' || NaoPode[letra]=='!')
  125. {
  126. SendClientMessage(playerid, -1, "Você usou um caracter inválido");
  127. ShowPlayerDialog(playerid,DIALOG_NOME,DIALOG_STYLE_INPUT,#Escolha o nome do portão, "Digite o nome do portão\n{FF0000}OBS: NÃO USE ACENTOS",#Continuar, #sair);
  128. return true;
  129. }
  130. }
  131. if(!strlen(inputtext))
  132. {
  133. ShowPlayerDialog(playerid,DIALOG_NOME,DIALOG_STYLE_INPUT,#Escolha o nome do portão, "Digite o nome do portão\n{FF0000}OBS: NÃO USE ACENTOS",#Continuar, #sair);
  134. return true;
  135. }
  136. new string[64];
  137. format(string, sizeof string, "%s.pwn", inputtext);
  138. if(fexist(string))
  139. {
  140. SendClientMessage(playerid, 0xFF0000, #Ja existe um arquivo com este nome.);
  141. ShowPlayerDialog(playerid,DIALOG_NOME,DIALOG_STYLE_INPUT,#Escolha o nome do portão, "Digite o nome do portão\n{FF0000}OBS: NÃO USE ACENTOS",#Continuar, #sair);
  142. return true;
  143. }
  144. strmid(NomePortao, inputtext, 0, strlen(inputtext), 128);
  145. ShowPlayerDialog(playerid, DIALOG_NOMECOMANDO, DIALOG_STYLE_INPUT, #Digite o nome do Comando, "Digite o comando para abri-lo\n{FF0000}OBS: NÃO USE ACENTOS\nOBS²: NÃO PRECISA DE '/' (Barra)", #Continuar, #sair);
  146. }
  147. if(dialogid == DIALOG_NOMECOMANDO)
  148. {
  149. if(!response)
  150. {
  151. DestroyObject(objeto);
  152. KillTimer(timer);
  153. return true;
  154. }
  155. new NaoPode[128];
  156. strmid(NaoPode,inputtext,0,strlen(inputtext),128);
  157. for(new letra=0;letra<128; ++letra)
  158. {
  159. if(NaoPode[letra]=='/' || NaoPode[letra]=='ã' ||
  160. NaoPode[letra]=='ó' || NaoPode[letra]=='á' || NaoPode[letra]=='ç' ||
  161. NaoPode[letra]=='â' || NaoPode[letra]=='í' || NaoPode[letra]=='ú' ||
  162. NaoPode[letra]=='?' || NaoPode[letra]=='!')
  163. {
  164. SendClientMessage(playerid, -1, "Você usou um caracter inválido");
  165. ShowPlayerDialog(playerid, DIALOG_NOMECOMANDO, DIALOG_STYLE_INPUT, #Digite o nome do Comando, "Digite o comando para abri-lo\n{FF0000}OBS: NÃO USE ACENTOS\nOBS²: NÃO PRECISA DE '/' (Barra)", #Continuar, #sair);
  166. return true;
  167. }
  168. }
  169. if(!strlen(inputtext))
  170. {
  171. ShowPlayerDialog(playerid, DIALOG_NOMECOMANDO, DIALOG_STYLE_INPUT, #Digite o nome do Comando, "Digite o comando para abri-lo\n{FF0000}OBS: NÃO USE ACENTOS\nOBS²: NÃO PRECISA DE '/' (Barra)", #Continuar, #sair);
  172. return true;
  173. }
  174. strmid(NomeComando, inputtext, 0, strlen(inputtext), 128);
  175. ShowPlayerDialog(playerid, DIALOG_CIMABAIXO, DIALOG_STYLE_MSGBOX, #Escolha uma opção, #O Portão vai abrir para cima ou para baixo?, #Cima, #Baixo);
  176. }
  177.  
  178. if(dialogid == DIALOG_CIMABAIXO)
  179. {
  180. if(response == 1)
  181. {
  182. CimaBaixo = 0;
  183. SendClientMessage(playerid, -1, #Ta legal! O portão vai abrir pra cima);
  184. ShowPlayerDialog(playerid, DIALOG_TIPO_COMANDO, DIALOG_STYLE_MSGBOX, #Escolha uma opção, #Agora diga qual tipo de comando você usa?, #zcmd, #strcmp);
  185. return true;
  186. }
  187. if(response == 0)
  188. {
  189. CimaBaixo = 1;
  190. SendClientMessage(playerid, -1, #Ta legal! O portão vai abrir pra baixo);
  191. ShowPlayerDialog(playerid, DIALOG_TIPO_COMANDO, DIALOG_STYLE_MSGBOX, #Escolha uma opção, #Agora diga qual tipo de comando você usa?, #zcmd, #strcmp);
  192. return true;
  193. }
  194. }
  195.  
  196. if(dialogid == DIALOG_TESTE_CIMABAIXO)
  197. {
  198. new Float:pX, Float:pY, Float:pZ,
  199. Float:rotX, Float:rotY, Float:rotZ;
  200. if(response == 0)
  201. {
  202. GetObjectPos(objeto, pX, pY, pZ);
  203. GetObjectRot(objeto, rotX, rotY, rotZ);
  204. MoveObject(objeto,pX, pY, pZ-10,3,rotX, rotY, rotZ);
  205. SetTimer("Teste", 5000, 0);
  206. CimaBaixo = 1;
  207. testando = 1;
  208. return true;
  209. }
  210. if(response == 1)
  211. {
  212. GetObjectPos(objeto, pX, pY, pZ);
  213. GetObjectRot(objeto, rotX, rotY, rotZ);
  214. MoveObject(objeto,pX, pY, pZ+7,3,rotX, rotY, rotZ);
  215. SetTimer("Teste", 5000, 0);
  216. CimaBaixo = 0;
  217. testando = 1;
  218. return true;
  219. }
  220. }
  221.  
  222. if(dialogid == DIALOG_TIPO_COMANDO)
  223. {
  224. if(response == 0)
  225. {
  226. TipoComando = 0;
  227. SendClientMessage(playerid, -1, #OK! você usa strcmp);
  228. SalvarPortao(playerid);
  229. return true;
  230. }
  231. if(response == 1)
  232. {
  233. TipoComando = 1;
  234. SendClientMessage(playerid, -1, #OK! você usa zcmd);
  235. SalvarPortao(playerid);
  236. return true;
  237. }
  238. }
  239. if(dialogid == DIALOG_TIPO)
  240. {
  241. if(!response)return true;
  242. switch(listitem)
  243. {
  244. case 0: TipoPortao = 980;
  245. case 1: TipoPortao = 969;
  246. case 2: TipoPortao = 971;
  247. case 3: TipoPortao = 975;
  248. case 4: TipoPortao = 976;
  249. case 5: TipoPortao = 988;
  250. case 6: TipoPortao = 989;
  251. case 7: TipoPortao = 2990;
  252. }
  253. timer = SetTimerEx("ChecarKeys", 77, true, "i", playerid);
  254. new Float:pX, Float:pY, Float:pZ;
  255. GetPlayerPos(playerid, pX, pY, pZ);
  256. objeto = CreateObject(TipoPortao, pX, pY+1, pZ, 0.0, 0.0, 0.0);
  257. SendClientMessage(playerid, 0xF6F600AA, #Para ver os comandos USE: /comandos);
  258. Editando = 1;
  259. }
  260. if(dialogid == DIALOG_TIPO2)
  261. {
  262. if(!response)return true;
  263. switch(listitem)
  264. {
  265. case 0: TipoPortao = 980;
  266. case 1: TipoPortao = 969;
  267. case 2: TipoPortao = 971;
  268. case 3: TipoPortao = 975;
  269. case 4: TipoPortao = 976;
  270. case 5: TipoPortao = 988;
  271. case 6: TipoPortao = 989;
  272. case 7: TipoPortao = 2990;
  273. }
  274. new Float:pX, Float:pY, Float:pZ, Float:rotX, Float:rotY, Float:rotZ;
  275. GetObjectPos(objeto, pX, pY, pZ);
  276. GetObjectRot(objeto, rotX, rotY, rotZ);
  277. DestroyObject(objeto);
  278. objeto = CreateObject(TipoPortao, pX, pY, pZ, rotX, rotY, rotZ);
  279. SendClientMessage(playerid, -1 ,#Portão modificado com sucesso!);
  280. }
  281. return 1;
  282. }
  283.  
  284.  
  285.  
  286.  
  287.  
  288. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  289. {
  290. if(newkeys == KEY_CROUCH && NoAnim[playerid] > 0 && Editando > 0)
  291. {
  292. ClearAnimations(playerid);
  293. NoAnim[playerid] = 0;
  294. return true;
  295. }
  296. if(newkeys == KEY_CROUCH && NoAnim[playerid] < 1 && Editando > 0)
  297. {
  298. ApplyAnimation(playerid,"PAULNMAC","Piss_loop",1.0,1,0,0,0,0);
  299. NoAnim[playerid] = 1;
  300. return true;
  301. }
  302. return 1;
  303. }
  304.  
  305.  
  306.  
  307.  
  308.  
  309. forward ChecarKeys(playerid);
  310. public ChecarKeys(playerid)
  311. {
  312. if(NoAnim[playerid] == 0)return true;
  313. new keys, updown, leftright;
  314. new Float:pX, Float:pY, Float:pZ;
  315. new Float:rotX, Float:rotY, Float:rotZ;
  316. GetPlayerKeys(playerid, keys, updown, leftright);
  317. if(keys & KEY_ANALOG_LEFT){
  318. GetObjectRot(objeto, rotX, rotY, rotZ);
  319. SetObjectRot(objeto, rotX, rotY, rotZ+VelocidadeRotacao);}
  320. if(keys & KEY_ANALOG_RIGHT){
  321. GetObjectRot(objeto, rotX, rotY, rotZ);
  322. SetObjectRot(objeto, rotX, rotY, rotZ-VelocidadeRotacao);}
  323. if(updown == KEY_UP){
  324. GetObjectPos(objeto, pX, pY, pZ);
  325. SetObjectPos(objeto, pX-VelocidadeDirecao, pY, pZ);}
  326. if(updown == KEY_DOWN){
  327. GetObjectPos(objeto, pX, pY, pZ);
  328. SetObjectPos(objeto, pX+VelocidadeDirecao, pY, pZ);}
  329. if(leftright == KEY_LEFT){
  330. GetObjectPos(objeto, pX, pY, pZ);
  331. SetObjectPos(objeto, pX, pY-VelocidadeDirecao, pZ);}
  332. if(leftright == KEY_RIGHT){
  333. GetObjectPos(objeto, pX, pY, pZ);
  334. SetObjectPos(objeto, pX, pY+VelocidadeDirecao, pZ);}
  335. if(keys & KEY_YES){
  336. GetObjectPos(objeto, pX, pY, pZ);
  337. SetObjectPos(objeto, pX, pY, pZ+VelocidadeSobeDesce);}
  338. if(keys & KEY_NO){
  339. GetObjectPos(objeto, pX, pY, pZ);
  340. SetObjectPos(objeto, pX, pY, pZ-VelocidadeSobeDesce);}
  341. if(updown == KEY_UP && keys == KEY_SPRINT){
  342. GetObjectPos(objeto, pX, pY, pZ);
  343. SetObjectPos(objeto, pX-0.8, pY, pZ);}
  344. if(updown == KEY_DOWN && keys == KEY_SPRINT){
  345. GetObjectPos(objeto, pX, pY, pZ);
  346. SetObjectPos(objeto, pX+0.8, pY, pZ);}
  347. if(leftright == KEY_LEFT && keys == KEY_SPRINT){
  348. GetObjectPos(objeto, pX, pY, pZ);
  349. SetObjectPos(objeto, pX, pY-0.8, pZ);}
  350. if(leftright == KEY_RIGHT && keys == KEY_SPRINT){
  351. GetObjectPos(objeto, pX, pY, pZ);
  352. SetObjectPos(objeto, pX, pY+0.8, pZ);}
  353. GetObjectPos(objeto, pX, pY, pZ);
  354. RemovePlayerMapIcon(playerid, 80);
  355. SetPlayerMapIcon(playerid, 80,pX,pY,pZ, 56, 0xE6E6E6E6);
  356. return true;
  357. }
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364. forward SalvarPortao(playerid);
  365. public SalvarPortao(playerid)
  366. {
  367. new str[256],str2[256], fiile[64];
  368. new Float:pX, Float:pY, Float:pZ;
  369. new Float:rotX, Float:rotY, Float:rotZ;
  370. GetObjectPos(objeto, pX, pY, pZ);GetObjectRot(objeto, rotX, rotY, rotZ);
  371. new File:fileportao;
  372. format(fiile, sizeof fiile, "%s.pwn", NomePortao);
  373. fileportao = fopen(fiile,io_append);
  374. format(str, 256, "//no Topo do GM\nnew %s;\n\n\n//OnGameModeInit\n%s = CreateObject(%d, %0.4f,%0.4f,%0.4f,%0.4f,%0.4f,%0.4f);\n\n\n",
  375. NomePortao, NomePortao, TipoPortao, pX,pY,pZ,rotX,rotY,rotZ);
  376. fwrite(fileportao,str);
  377. fclose(fileportao);
  378. if(TipoComando == 1)
  379. {
  380. fileportao = fopen(fiile,io_append);
  381. if(CimaBaixo == 1)
  382. {
  383. format(str2, 256, "//comando\nCMD:%s(playerid)\n{\n MoveObject(%s, %0.4f,%0.4f,%0.4f,3,%0.4f,%0.4f,%0.4f);\n",
  384. NomeComando,NomePortao,pX,pY,pZ-10,rotX,rotY,rotZ);
  385. }
  386. else
  387. {
  388. format(str2, 256, "//comando\nCMD:%s(playerid)\n{\n MoveObject(%s, %0.4f,%0.4f,%0.4f,3,%0.4f,%0.4f,%0.4f);\n",
  389. NomeComando,NomePortao,pX,pY,pZ+7,rotX,rotY,rotZ);
  390. }
  391. fwrite(fileportao,str2);
  392. fclose(fileportao);
  393. fileportao = fopen(fiile,io_append);
  394. format(str2, 356, " SetTimer(#Move%s, 5000, 0);\n SendClientMessage(playerid, 0x2641FEFF, #Portao aberto);\n return true;\n}\n\n//No fim do GM\nforward Move%s();\npublic Move%s()\n{\n",
  395. NomePortao,
  396. NomePortao, NomePortao);
  397. fwrite(fileportao,str2);
  398. fclose(fileportao);
  399. }
  400. if(TipoComando == 0)
  401. {
  402. fileportao = fopen(fiile,io_append);
  403. if(CimaBaixo == 1)
  404. {
  405. format(str2, 256, "//comando\nif(strcmp(#/%s, cmdtext, true) == 0)\n{\n MoveObject(%s, %0.4f,%0.4f,%0.4f,3,%0.4f,%0.4f,%0.4f);\n",
  406. NomeComando,NomePortao,pX,pY,pZ-10,rotX,rotY,rotZ);
  407. }
  408. else
  409. {
  410. format(str2, 256, "//comando\nif(strcmp(#/%s, cmdtext, true) == 0)\n{\n MoveObject(%s, %0.4f,%0.4f,%0.4f,3,%0.4f,%0.4f,%0.4f);\n",
  411. NomeComando,NomePortao,pX,pY,pZ+7,rotX,rotY,rotZ);
  412. }
  413. fwrite(fileportao,str2);
  414. fclose(fileportao);
  415. fileportao = fopen(fiile,io_append);
  416. format(str2, 356, " SetTimer(#Move%s, 5000, 0);\n SendClientMessage(playerid, 0x2641FEFF, #Portao aberto);\n return true;\n}\n\n//No fim do GM\nforward Move%s();\npublic Move%s()\n{\n",
  417. NomePortao,
  418. NomePortao, NomePortao);
  419. fwrite(fileportao,str2);
  420. fclose(fileportao);
  421. }
  422. fileportao = fopen(fiile,io_append);
  423. format(str2, 256, " MoveObject(%s,%0.4f, %0.4f, %0.4f,3,%0.4f, %0.4f, %0.4f);\n return true;\n}",
  424. NomePortao, pX, pY, pZ, rotX, rotY, rotZ);
  425. fwrite(fileportao,str2);
  426. fclose(fileportao);
  427. KillTimer(timer);
  428. DestroyObject(objeto);
  429. Editando = 0;
  430. NoAnim[playerid] = 0;
  431. RemovePlayerMapIcon(playerid, 80);
  432. ClearAnimations(playerid);
  433. format(str2, sizeof str2, "Atenção: O arquivo ( %s.pwn ) foi criado com sucesso em sua pasta scriptfiles", NomePortao);
  434. SendClientMessage(playerid, 0x2641FEFF, #|------------------------| Criador de Portão |------------------------|);
  435. SendClientMessage(playerid, 0x2641FEFF, str2);
  436. SendClientMessage(playerid, 0x2641FEFF, #Nele contem as informações necessárias para adicionar este portão em seu GameMode.);
  437. SendClientMessage(playerid, 0x2641FEFF, #Qualquer duvida ou BUG adicione este email: dimmy_cn@hotmail.com ! Bom jogo.);
  438. SendClientMessage(playerid, 0x2641FEFF, #________________________________________________________________________);
  439. return true;
  440. }
  441.  
  442. forward Teste();
  443. public Teste()
  444. {
  445. new Float:pX, Float:pY, Float:pZ,
  446. Float:rotX, Float:rotY, Float:rotZ;
  447. GetObjectPos(objeto, pX, pY, pZ);
  448. GetObjectRot(objeto, rotX, rotY, rotZ);
  449. if(CimaBaixo == 0)MoveObject(objeto,pX, pY, pZ-7,3,rotX, rotY, rotZ);
  450. if(CimaBaixo == 1)MoveObject(objeto,pX, pY, pZ+10,3,rotX, rotY, rotZ);
  451. testando = 0;
  452. return true;
  453. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement