Advertisement
Guest User

Untitled

a guest
Oct 6th, 2012
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.09 KB | None | 0 0
  1. /*
  2. Jaja liebe Typen die das Filterscript gedownloadet haben :O
  3. ich habe dieses kleine Vote System einfach mal aus Spaß geschrieben,
  4. ich hoffe es gefällt euch.
  5. */
  6.  
  7. #include <a_samp>
  8.  
  9. /* === FARBEN ===*/
  10. #define cROT 0xE60000FF
  11. #define cAROT 0xFB0000FF
  12. #define cGELB 0xFFFF00FF
  13. #define cORANGE 0xF97804FF
  14. #define cLROT 0xFF8080FF
  15. #define cLBLAU 0x00C2ECFF
  16. #define cBLAU 0x33AAFFFF
  17. #define cLGREEN 0x38FF06FF
  18. #define cDPINK 0xE100E1FF
  19. #define cFARBESYSTEM 0xEFEFF7AA
  20.  
  21. /* === EINSTELLUNGEN ===*/
  22. #define STIMMZEIT 30000
  23. #define STRING 255
  24. #define WARTEZEIT 120000
  25.  
  26. /* === DEFINDES NEW === */
  27. new STIMMKICK;
  28. new Votes;
  29. new Voted[MAX_PLAYERS];
  30. new PlayerCount;
  31. new Wait[MAX_PLAYERS];
  32.  
  33. forward VoteTimer(giveplayerid);
  34. forward WaitT(playerid);
  35.  
  36. public OnFilterScriptInit()
  37. {
  38. print("\n--------------------------------------");
  39. print("Kleines Votesystem von mir! (Maax_)");
  40. print("--------------------------------------\n");
  41. return 1;
  42. }
  43.  
  44. public OnFilterScriptExit()
  45. {
  46. return 1;
  47. }
  48.  
  49. public OnPlayerConnect(playerid)
  50. {
  51. Voted[playerid] = 0;
  52. return 1;
  53. }
  54.  
  55. public OnPlayerDisconnect(playerid, reason)
  56. {
  57. Voted[playerid] = 0;
  58. return 1;
  59. }
  60.  
  61. public OnPlayerCommandText(playerid, cmdtext[])
  62. {
  63.  
  64. new cmd[128];
  65. new tmp[128];
  66. new idx;
  67. new giveplayerid;
  68. new giveplayer[MAX_PLAYER_NAME];
  69. new sendername[MAX_PLAYER_NAME];
  70. new string[STRING];
  71. cmd = strtok(cmdtext,idx);
  72.  
  73. if(strcmp(cmd, "/STIMMKICK", true) == 0)
  74. {
  75. if(Wait[playerid] == 1) return SendClientMessage(playerid, cBLAU, ">> Du musst 60 Sekunden warten bevor du wieder ein Vote startest!");
  76. for (new i = 0; i < GetMaxPlayers(); i++)
  77. {
  78. if(IsPlayerConnected(i))
  79. {
  80. #if defined ADMINSONLNE
  81. if(IsPlayerAdmin(i))
  82. {
  83. format(string, sizeof(string), "ERROR: Derzeit ist ein Admin Online. (%s (%d)) schreibe einfach einen Report zu einem Admin. (/sup)", Name(i), i);
  84. SendClientMessage(playerid, cROT, string);
  85. return 1;
  86. }
  87. #endif
  88. PlayerCount++;
  89. }
  90. }
  91. if(PlayerCount <= 3)
  92. {
  93. SendClientMessage(playerid, cROT, "ERROR: Es müssen 3 Spieler Online sein damit du einen STIMMKICK Starten kannst!");
  94. return 1;
  95. }
  96. new reason[256];
  97. tmp = strtok(cmdtext, idx);
  98. if(!strlen(tmp))
  99. {
  100. SendClientMessage(playerid, cBLAU, "* /STIMMKICK [pID] [Grund]");
  101. return 1;
  102. }
  103. if(STIMMKICK == 1)
  104. {
  105. SendClientMessage(playerid, cROT, "ERROR: Es läuft gerade eine Umfrage für einen STIMMKICK!");
  106. return 1;
  107. }
  108. if(IsPlayerAdmin(giveplayerid))
  109. {
  110. SendClientMessage(playerid, cROT, "ERROR: Du kannst auf keinen Admin Voten!");
  111. return 1;
  112. }
  113. giveplayerid = ReturnUser(tmp);
  114. if(giveplayerid != INVALID_PLAYER_ID)
  115. {
  116. GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
  117. GetPlayerName(playerid, sendername, sizeof(sendername));
  118. new length = strlen(cmdtext);
  119. while ((idx < length) && (cmdtext[idx] <= ' '))
  120. {
  121. idx++;
  122. }
  123. new offset = idx;
  124. while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
  125. {
  126. reason[idx - offset] = cmdtext[idx];
  127. idx++;
  128. }
  129. reason[idx - offset] = EOS;
  130. if(!strlen(reason))
  131. {
  132. SendClientMessage(playerid, cBLAU, "* /STIMMKICK [pID] [Grund]");
  133. return 1;
  134. }
  135. else
  136. {
  137.  
  138. format(string, sizeof(string), "[NEWS]: Spieler %s hat einen STIMMKICK auf %s gestartet, Grund: %s | Verbleibende Zeit: %d Sekunden", Name(playerid), Name(giveplayerid), reason, STIMMZEIT / 1000);
  139. print(string);
  140. SendClientMessageToAll(cGELB, string);
  141. SendClientMessageToAll(cGELB, "* Möchtest du auch das dieser Spieler gekickt wird? Nutze /vote");
  142. Votes = 1;
  143. SetTimerEx("VoteTimer", STIMMZEIT, 0, "i", giveplayerid);
  144. STIMMKICK = 1;
  145. Voted[playerid] = 1;
  146. Wait[playerid] = 1;
  147. SetTimerEx("WaitT", WARTEZEIT, 0, "d", playerid);
  148. }
  149. }
  150. else if(giveplayerid == INVALID_PLAYER_ID)
  151. {
  152. format(string, sizeof(string), "* Derzeit ist kein Spieler mit der ID %d Online!", giveplayerid);
  153. SendClientMessage(playerid, cBLAU, string);
  154. }
  155. return 1;
  156. }
  157.  
  158. if(strcmp(cmd, "/vote", true) == 0)
  159. {
  160. if(Voted[playerid] == 1)
  161. {
  162. SendClientMessage(playerid, cROT, "Du hast schon ein Vote gemacht!");
  163. }
  164. else
  165. {
  166. Voted[playerid] = 1;
  167. Votes++;
  168. format(string, sizeof(string), "%s hat einen Vote gemacht (%d/%d)", Name(playerid), Votes, (PlayerCount /= 2)+1);
  169. SendClientMessageToAll(cGELB, string);
  170. }
  171. return 1;
  172. }
  173. return 0;
  174. }
  175.  
  176. public VoteTimer(giveplayerid)
  177. {
  178. new string[STRING];
  179. new TempPlayerCount = PlayerCount;
  180. TempPlayerCount /= 2;
  181. if(Votes > TempPlayerCount)
  182. {
  183. format(string, sizeof(string), "%s wurde von dem Vote System gekickt!", Name(giveplayerid));
  184. SendClientMessageToAll(cGELB, string);
  185. Kick(giveplayerid);
  186. }
  187. else
  188. {
  189. format(string, sizeof(string), "%s wurde nicht von dem Vote System gekickt, Grund: nicht genug Votes", Name(giveplayerid));
  190. SendClientMessageToAll(cGELB, string);
  191. }
  192. for(new i = 0; i < GetMaxPlayers(); i++)
  193. {
  194. Voted[i] = 0;
  195. }
  196. Votes = 0;
  197. STIMMKICK = 0;
  198. return 1;
  199. }
  200.  
  201. public WaitT(playerid)
  202. {
  203. Wait[playerid] = 0;
  204. return 1;
  205. }
  206.  
  207.  
  208.  
  209. stock Name(playerid) //By Alex "Y_Less" Cole
  210. {
  211. new plname[24];
  212. GetPlayerName(playerid, plname, sizeof(plname));
  213. return plname;
  214. }
  215. stock strtok(const string[], &index,seperator=' ')
  216. {
  217. new length = strlen(string);
  218. new offset = index;
  219. new result[128];
  220. while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  221. {
  222. result[index - offset] = string[index];
  223. index++;
  224. }
  225.  
  226. result[index - offset] = EOS;
  227. if ((index < length) && (string[index] == seperator))
  228. {
  229. index++;
  230. }
  231. return result;
  232. }
  233. stock IsNumeric(const string[])
  234. {
  235. for (new i = 0, j = strlen(string); i < j; i++)
  236. if (string[i] > '9' || string[i] < '0')
  237. return 0;
  238. return 1;
  239. }
  240.  
  241. ReturnUser(text[], playerid = INVALID_PLAYER_ID)
  242. {
  243. new pos = 0;
  244. while (text[pos] < 0x21)
  245. {
  246. if (text[pos] == 0) return INVALID_PLAYER_ID;
  247. pos++;
  248. }
  249. new userid = INVALID_PLAYER_ID;
  250. if (IsNumeric(text[pos]))
  251. {
  252. userid = strval(text[pos]);
  253. if (userid >=0 && userid < MAX_PLAYERS)
  254. {
  255. if(!IsPlayerConnected(userid))
  256. userid = INVALID_PLAYER_ID;
  257. else return userid;
  258. }
  259. }
  260. new len = strlen(text[pos]);
  261. new count = 0;
  262. new pname[MAX_PLAYER_NAME];
  263. for (new i = 0; i < GetMaxPlayers(); i++)
  264. {
  265. if (IsPlayerConnected(i))
  266. {
  267. GetPlayerName(i, pname, sizeof (pname));
  268. if (strcmp(pname, text[pos], true, len) == 0)
  269. {
  270. if (len == strlen(pname)) return i;
  271. else
  272. {
  273. count++;
  274. userid = i;
  275. }
  276. }
  277. }
  278. }
  279. if (count != 1)
  280. {
  281. if (playerid != INVALID_PLAYER_ID)
  282. {
  283. if (count) SendClientMessage(playerid, cFARBESYSTEM, "ERROR: Mit diesem Namen gibt es mehrere Benutzer, bitte geben sie den Namen vollständig ein!");
  284. else SendClientMessage(playerid, cFARBESYSTEM, "ERROR: Benutzer nicht gefunden.");
  285. }
  286. userid = INVALID_PLAYER_ID;
  287. }
  288. return userid;
  289. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement