Advertisement
Guest User

[FS]Natal

a guest
Dec 4th, 2016
928
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 KB | None | 0 0
  1. //============================ SISTEMA DE NATAL 2016 - Samp Extreme Oficial ===============================//
  2. // www.sampextremeoficial.blogspot.com //
  3. // By [SEO]Marcos //
  4. #include <a_samp>
  5. #include <streamer>
  6. #include <sscanf2>
  7. #include <dini>
  8.  
  9. #define PASTA_ARVORES "/Natal/Arvore%d.ini"//Diretorio das arvores
  10. #define MAX_ARVORES 10 // Coloque aqui o maximo de arvores que você vai criar. Default 10
  11.  
  12. #define Vermelho 0xFF0000AA
  13.  
  14.  
  15. forward CriarArvore(Float:X,Float:Y,Float:Z);
  16. forward DeletarArvore(arvoreid);
  17. forward CarregarArvores();
  18.  
  19. new Chapeu[MAX_PLAYERS];
  20. new Arvore[MAX_ARVORES][4];
  21. new ProximaArvore;
  22. new arquivo[128];
  23. new Text3D:Id[MAX_ARVORES];
  24. new counter = 0;
  25.  
  26. public OnFilterScriptInit()
  27. {
  28. format(arquivo,sizeof(arquivo),"Natal");
  29. if(!dini_Exists(arquivo))
  30. {
  31. for(new i=0;i<=MAX_PLAYERS;i++)
  32. {
  33. if(IsPlayerAdmin(i))
  34. {
  35. SendClientMessage(i,0xFFFF00AA,"A Pasta 'Natal' não está criada!! Não foi possivel Carregar o Filterscript");
  36. SendClientMessage(i,0xFFFF00AA,"Crie a Pasta 'Natal' dentro do scriptfiles e depois digite /rcon loadfs [FS]Natal");
  37. }
  38. }
  39. SendRconCommand("unloadfs [FS]Natal");
  40. return 1;
  41. }
  42. print(" [FS] Natal Carregado");
  43. CarregarArvores();
  44. SetTimer("Mensagem",300000,1);
  45. return 1;
  46. }
  47. public OnFilterScriptExit()
  48. {
  49. print(" [FS] Natal Descarregado");
  50. return 1;
  51. }
  52. public OnPlayerCommandText(playerid, cmdtext[])
  53. {
  54. new
  55. cmd[256], tmp[256], idx
  56. ;
  57. cmd = strtok2(cmdtext, idx);
  58. if(strcmp(cmd,"/criararvore", true)==0)
  59. {
  60. if(IsPlayerAdmin(playerid))
  61. {
  62. new Float:X,Float:Y,Float:Z;
  63. GetPlayerPos(playerid,X,Y,Z);
  64. for(new i=0;i<=MAX_ARVORES;i++)
  65. {
  66. format(arquivo,sizeof(arquivo),PASTA_ARVORES,i);
  67. if(!dini_Exists(arquivo))
  68. {
  69. dini_Create(arquivo);
  70. dini_FloatSet(arquivo,"posX",X);
  71. dini_FloatSet(arquivo,"posX",X);
  72. dini_FloatSet(arquivo,"posY",Y);
  73. dini_FloatSet(arquivo,"posZ",Z);
  74. CriarArvore(X,Y,Z);
  75. SetPlayerPos(playerid,X,Y-3,Z);
  76. SendClientMessage(playerid,-1,"Arvore Criada!");
  77. return 1;
  78. }
  79. }
  80. SendClientMessage(playerid,Vermelho,"Limite de arvores atingido!");
  81. }
  82. return 1;
  83. }
  84. if(strcmp(cmd,"/excluirarvore", true)==0)
  85. {
  86. if (IsPlayerAdmin(playerid))
  87. {
  88. new arvoreid;
  89. tmp = strtok2(cmdtext, idx);
  90. if(!strlen(tmp))
  91. {
  92. SendClientMessage(playerid, Vermelho, "| FS - Natal | Digite: /excluirarvore [id]");
  93. return 1;
  94. }
  95. arvoreid = strval(tmp);
  96. if (arvoreid < 0 || arvoreid > MAX_ARVORES || arvoreid > ProximaArvore-1) return SendClientMessage(playerid, Vermelho, "Id Inválido!");
  97. DeletarArvore(arvoreid);
  98. counter--;
  99. SendClientMessage(playerid, -1, "Arvore Excluida!");
  100. }
  101. return 1;
  102. }
  103. if (strcmp("/comandosnatal", cmdtext, true, 10) == 0)
  104. {
  105. if(IsPlayerAdmin(playerid))
  106. {
  107. SendClientMessage(playerid,0xFF0000AA,"========== Comandos Natal ===========");
  108. SendClientMessage(playerid,0xFFFFFFAA,"/criararvore");
  109. SendClientMessage(playerid,0xFFFFFFAA,"/excluirarvore");
  110. SendClientMessage(playerid,0xFFFFFFAA,"/mostrarids - /ocultarids - /chapeu");
  111. SendClientMessage(playerid,0xFF0000AA,"========== Comandos Natal ===========");
  112. return 1;
  113. }
  114. return 1;
  115. }
  116. if (strcmp("/chapeu", cmdtext, true, 10) == 0)
  117. {
  118. if(Chapeu[playerid]==0)
  119. {
  120. SetPlayerAttachedObject(playerid,1,19066,2,0.13,0.0,0.0,90,90.0,0.0);
  121. Chapeu[playerid] = 1;
  122. SendClientMessage(playerid,-1,"Chapéu de Natal Colocado");
  123. }
  124. else
  125. {
  126. RemovePlayerAttachedObject(playerid,1);
  127. SendClientMessage(playerid,-1,"Chapéu de Natal Retirado");
  128. Chapeu[playerid] = 0;
  129. }
  130. return 1;
  131. }
  132. if (strcmp("/ocultarids", cmdtext, true, 10) == 0)
  133. {
  134. if(IsPlayerAdmin(playerid))
  135. {
  136. OcultarIds();
  137. SendClientMessage(playerid,-1,"Ids Ocultados!");
  138. }
  139. return 1;
  140. }
  141. if (strcmp("/mostrarids", cmdtext, true, 10) == 0)
  142. {
  143. if(IsPlayerAdmin(playerid))
  144. {
  145. MostrarIds();
  146. SendClientMessage(playerid,-1,"Ids Exibidos!");
  147. }
  148. return 1;
  149. }
  150. return 0;
  151. }
  152. public CriarArvore(Float:X,Float:Y,Float:Z)
  153. {
  154. Arvore[ProximaArvore][0] = CreateDynamicObject(19076, X-0.39, Y+0.67, Z-0.9, 0.00, 0.00, 0.00); //Arvore
  155. Arvore[ProximaArvore][1] = CreateDynamicObject(19056, X-1.39, Y+0.10, Z-0.2, 0.00, 0.00, 0.00);
  156. Arvore[ProximaArvore][2] = CreateDynamicObject(19057, X+1.39, Y+0.45, Z-0.2, 0.00, 0.00, 0.00);
  157. Arvore[ProximaArvore][3] = CreateDynamicObject(19054, X-0.07, Y-0.67, Z-0.2, 0.00, 0.00, 0.00);
  158. ProximaArvore++;
  159. counter++;
  160. return (ProximaArvore-1);
  161. }
  162. public DeletarArvore(arvoreid)
  163. {
  164. DestroyDynamicObject(Arvore[arvoreid][0]);
  165. DestroyDynamicObject(Arvore[arvoreid][1]);
  166. DestroyDynamicObject(Arvore[arvoreid][2]);
  167. DestroyDynamicObject(Arvore[arvoreid][3]);
  168. format(arquivo,128,PASTA_ARVORES,arvoreid);
  169. dini_Remove(arquivo);
  170. ProximaArvore--;
  171. return 1;
  172. }
  173. public CarregarArvores()
  174. {
  175. new string[128];
  176. for(new i=0;i<=MAX_ARVORES;i++){
  177. format(string,sizeof(string),PASTA_ARVORES,i);
  178. if(dini_Exists(string)){
  179. CriarArvore(dini_Float(string,"posX"),dini_Float(string,"posY"),dini_Float(string,"posZ"));
  180. counter++;
  181. }
  182. }
  183. format(string,sizeof(string),"%d árvores de natal carregadas!!",counter);
  184. if(counter>0) print(string);
  185. return 1;
  186. }
  187. stock MostrarIds()
  188. {
  189. new str[50];
  190. for(new i=0;i<=MAX_ARVORES;i++){
  191. format(arquivo,128,PASTA_ARVORES,i);
  192. if(dini_Exists(arquivo)){
  193. format(str,50,"Arvore id: %d",i);
  194. Id[i] = Create3DTextLabel(str,0xFFFF80AA,dini_Float(arquivo,"posX"),dini_Float(arquivo,"posY"),dini_Float(arquivo,"posZ"),20.0,0);
  195. }
  196. }
  197. return 1;
  198. }
  199. stock OcultarIds()
  200. {
  201. for(new i=0;i<=MAX_ARVORES;i++){
  202. Delete3DTextLabel(Id[i]);
  203. }
  204. return 1;
  205. }
  206. forward Mensagem();
  207. public Mensagem(){
  208. SendClientMessageToAll(0xFF8000AA,"Nossa Equipe Deseja a todos um Feliz Natal!! Use /chapeu");
  209. return 1;
  210. }
  211. //Se o seu server já tiver strtok não adicione isso abaixo
  212. stock strtok2(const string[], &index)
  213. {
  214. new length = strlen(string);
  215. while ((index < length) && (string[index] <= ' '))
  216. {
  217. index++;
  218. }
  219.  
  220. new offset = index;
  221. new result[20];
  222. while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  223. {
  224. result[index - offset] = string[index];
  225. index++;
  226. }
  227. result[index - offset] = EOS;
  228. return result;
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement