Youssef_Ehab

so wht do u think..???

May 26th, 2014
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.54 KB | None | 0 0
  1. //********************* [ Credits ] ******************************************//
  2. /*
  3. Gang Script by Youssef Ehab Version 1.1
  4. */
  5. //******************** [ Includes ] ******************************************//
  6. #include <a_samp>
  7. #include <mysql>
  8. #include <sscanf2>
  9. #include <zcmd>
  10.  
  11. //******************** [ Forwards ] ******************************************//
  12.  
  13.  
  14. //******************** [ Defines ] ******************************************//
  15.  
  16. // Script
  17. #define GANG_VERSION "1.1"
  18.  
  19. // Colors
  20. #define COLOR_RED 0xFF000000
  21. #define COLOR_GREEN 0x00FF0000
  22. #define COLOR_BLUE 0x0000FF00
  23. #define COLOR_YELLOW 0xFFFF0000
  24.  
  25.  
  26.  
  27. // Mysql
  28. #define DB_HOST "localhost"
  29. #define DB_USER "admin"
  30. #define DB_DB "gang"
  31. #define DB_PASS "admin"
  32.  
  33. #define CREATE_DB_USERS \
  34. "CREATE TABLE IF NOT EXISTS users (id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,\
  35. username VARCHAR(25) NOT NULL, gang INT(5) NOT NULL) ENGINE = MyISAM;"
  36.  
  37. #define CREATE_DB_GANGS \
  38. "CREATE TABLE IF NOT EXISTS gangs (id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,\
  39. name VARCHAR(100) NOT NULL, owner VARCHAR(25) NOT NULL) ENGINE = MyISAM;"
  40.  
  41. // Dialogs
  42. #define DIALOG_GANG_INFO 1
  43.  
  44. //******************** [ Enums ] *********************************************//
  45. enum pInfo
  46. {
  47. Id,
  48. Username[25],
  49. Gang,
  50. }
  51.  
  52. //******************** [ Symbols ] *******************************************//
  53. new
  54. PlayerInfo[MAX_PLAYERS][pInfo];
  55.  
  56. new
  57. Invite[MAX_PLAYERS];
  58.  
  59. //******************** [ Callbakcs ] *****************************************//
  60.  
  61. #if defined filsterscript
  62.  
  63. public OnFilterScriptInit()
  64. {
  65. InitMysqlConnection();
  66.  
  67. printf("_____________________________________");
  68. printf("| |");
  69. printf("| Gang FS v%s |", GANG_VERSION);
  70. printf("| By |");
  71. printf("| Cameltoe |");
  72. printf("_____________________________________");
  73. return 1;
  74.  
  75.  
  76. #else
  77.  
  78. main()
  79. {
  80. InitMysqlConnection();
  81.  
  82. printf("_____________________________________");
  83. printf("| |");
  84. printf("| Gang FS v%s |", GANG_VERSION);
  85. printf("| By |");
  86. printf("| Cameltoe |");
  87. printf("_____________________________________");
  88. return 1;
  89. }
  90.  
  91. #endif
  92.  
  93. public OnPlayerConnect(playerid)
  94. {
  95. new Query[128];
  96. ResetPlayerInfo(playerid);
  97.  
  98. if(CheckUser(playerid))
  99. {
  100. LoadPlayerInfo(playerid);
  101. }
  102. else
  103. {
  104. format(Query, sizeof(Query), "INSERT INTO users (id, username, gang) VALUES (NULL, '%s', 0);", GetPlayerNameEx(playerid));
  105. mysql_query(Query);
  106. }
  107. return 1;
  108. }
  109.  
  110. public OnPlayerText(playerid, text[])
  111. {
  112. new string[128];
  113. if(PlayerInfo[playerid][Gang]) format(string, sizeof(string), "[ %s ] %s ( %d ) : %s", GetGangName(PlayerInfo[playerid][Gang]), GetPlayerNameEx(playerid), playerid, text);
  114. else format(string, sizeof(string), "%s ( %d ) : %s", GetPlayerNameEx(playerid), playerid, text);
  115. return SendClientMessageToAll(GetPlayerColor(playerid), string);
  116. }
  117.  
  118. public OnPlayerCommandText(playerid, cmdtext[])
  119. {
  120. return 0;
  121. }
  122.  
  123. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  124. {
  125. switch(dialogid)
  126. {
  127. case DIALOG_GANG_INFO:
  128. {
  129. ShowGangInfoForPlayer(listitem + 1, playerid);
  130. }
  131. }
  132. return 1;
  133. }
  134.  
  135. //******************** [ Functions ] *****************************************//
  136.  
  137. //******************** [ Stocks ] ********************************************//
  138.  
  139. stock CheckUser(playerid)
  140. {
  141. new Query[100]; format(Query, sizeof(Query), "SELECT * FROM users WHERE username = '%s';", GetPlayerNameEx(playerid));
  142. mysql_query(Query);
  143. mysql_store_result();
  144. if(mysql_num_rows()) return 1;
  145. return 0;
  146. }
  147.  
  148. stock LoadPlayerInfo(playerid)
  149. {
  150. new Query[100]; format(Query, sizeof(Query), "SELECT * FROM users WHERE username = '%s';", GetPlayerNameEx(playerid));
  151. mysql_query(Query);
  152. mysql_store_result();
  153. mysql_fetch_row(Query, "|");
  154. sscanf(Query, "p<|>e<is[25]i>", PlayerInfo[playerid]);
  155. }
  156.  
  157. stock CheckGangByName(Name[])
  158. {
  159. new Query[100]; format(Query, sizeof(Query), "SELECT * FROM gangs WHERE name = '%s';", Name);
  160. mysql_query(Query);
  161. mysql_store_result();
  162. if(mysql_num_rows()) return 1;
  163. return 0;
  164. }
  165.  
  166. stock CheckGangById(GangID)
  167. {
  168. new Query[100]; format(Query, sizeof(Query), "SELECT * FROM gangs WHERE id = %d;", GangID;
  169. mysql_query(Query);
  170. mysql_store_result();
  171. if(mysql_num_rows()) return 1;
  172. return 0;
  173. }
  174.  
  175. stock ResetPlayerInfo(playerid)
  176. {
  177. Invite[playerid] = 0;
  178. PlayerInfo[playerid][Gang] = 0;
  179. }
  180.  
  181. stock InitMysqlConnection()
  182. {
  183. mysql_init();
  184. mysql_connect(DB_HOST, DB_USER, DB_PASS, DB_DB);
  185. mysql_query(CREATE_DB_USERS);
  186. mysql_query(CREATE_DB_GANGS);
  187. }
  188.  
  189. stock IsPlayerGangLeader(playerid)
  190. {
  191. new Query[100]; format(Query, sizeof(Query), "SELECT * FROM gangs WHERE id = %d AND owner = '%s';", PlayerInfo[playerid][Gang], GetPlayerNameEx(playerid));
  192. mysql_query(Query);
  193. mysql_store_result();
  194. if(mysql_num_rows()) return 1;
  195. return 0;
  196. }
  197.  
  198. stock IsMySelf(pID, oID)
  199. {
  200. if(pID == oID) return 1;
  201. return 0;
  202. }
  203.  
  204. stock GetGangName(GangID)
  205. {
  206. new gName[100], Query[150]; format(Query, sizeof(Query), "SELECT name FROM gangs WHERE id = %d;", GangID);
  207. mysql_query(Query);
  208. mysql_store_result();
  209. mysql_fetch_string(gName);
  210. return gName;
  211. }
  212.  
  213. stock GetGangMemberCount(gID)
  214. {
  215. new Query[150]; format(Query, sizeof(Query), "SELECT * FROM users WHERE gang = %d;", gID);
  216. mysql_query(Query);
  217. mysql_store_result();
  218. return mysql_num_rows();
  219. }
  220.  
  221. stock GetGangCount()
  222. {
  223. new Query[150]; format(Query, sizeof(Query), "SELECT * FROM gangs;");
  224. mysql_query(Query);
  225. mysql_store_result();
  226. return mysql_num_rows();
  227. }
  228.  
  229. stock ShowGangInfoForPlayer(GangID, pID)
  230. {
  231. new tGid, tGname[100], tGOwner[25], Query[150], string[200];
  232. format(Query, sizeof(Query), "SELECT * FROM gangs WHERE id = %d;", GangID);
  233. mysql_query(Query);
  234. mysql_store_result();
  235. if(!mysql_num_rows()) return 0;
  236. mysql_fetch_row(Query, "|");
  237. sscanf(Query, "p<|>is[100]s[25]", tGid, tGname, tGOwner);
  238. format(string, sizeof(string), "Id: %d - Name: %s - Owner: %s - Members: %d", tGid, tGname, tGOwner, GetGangMemberCount(GangID));
  239. return ShowPlayerDialog(pID, DIALOG_GANG_INFO, DIALOG_STYLE_MSGBOX, "Cameltoe's Gang FS", string, "Cancel", "");
  240. }
  241.  
  242. stock GetPlayerNameEx(playerid)
  243. {
  244. new pName[25];
  245. GetPlayerName(playerid, pName, 25);
  246. return pName;
  247. }
  248.  
  249. stock strmatch(const String1[], const String2[])
  250. {
  251. if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1))) return true;
  252. else return false;
  253. }
  254.  
  255. //******************** [ Commands ] ******************************************//
  256.  
  257. command(g, playerid, params[])
  258. {
  259. new string[128];
  260. if(!PlayerInfo[playerid][Gang]) return SendClientMessage(playerid, COLOR_YELLOW, "You have to be member of an gang to use this command.");
  261. format(string, sizeof(string), "Gang : %s ( %d ) : %s", GetPlayerNameEx(playerid), playerid, params);
  262. for(new pID; pID < MAX_PLAYERS; pID++)
  263. {
  264. if(IsPlayerConnected(pID)) {
  265. SendClientMessage(pID, GetPlayerColor(playerid), string);
  266. }
  267. }
  268. return 1;
  269. }
  270.  
  271. command(gangs, playerid, params[])
  272. {
  273. new gID, tGid, tGname[100], tGOwner[25], Query[200], string[1000]; // Change this depending on how many gangs you have.
  274. if(sscanf(params, "u", gID))
  275. {
  276. format(Query, sizeof(Query), "SELECT * FROM gangs");
  277. mysql_query(Query);
  278. mysql_store_result();
  279. while(mysql_fetch_row(Query, "|"))
  280. {
  281. if(!mysql_num_rows()) continue;
  282. sscanf(Query, "p<|>is[100]s[25]", tGid, tGname, tGOwner);
  283. format(string, sizeof(string), "%sId: %d - Name: %s - Owner: %s\r\n", string, tGid, tGname, tGOwner);
  284. }
  285. ShowPlayerDialog(playerid, DIALOG_GANG_INFO, DIALOG_STYLE_LIST, "Cameltoe's Gang FS", string, "Info", "Cancel");
  286. }
  287. else
  288. {
  289. if(!ShowGangInfoForPlayer(gID, playerid)) SendClientMessage(playerid, COLOR_YELLOW, "Invalid gang id.");
  290. }
  291. return 1;
  292. }
  293.  
  294. command(ganginfo, playerid, params[])
  295. {
  296. new gID;
  297. if(sscanf(params, "i", gID)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /ganginfo [ gangID ]");
  298. if(!ShowGangInfoForPlayer(gID, playerid)) SendClientMessage(playerid, COLOR_YELLOW, "Invalid gang id.");
  299. return 1;
  300. }
  301.  
  302. command(retreat, playerid, params[])
  303. {
  304. new Query[100], string[128];
  305. if(Invite[playerid] == 0 && PlayerInfo[playerid][Gang] == 0) return SendClientMessage(playerid, COLOR_YELLOW, "You are not an member of any gang.");
  306. format(string, sizeof(string), "You now left %s.", GetGangName(PlayerInfo[playerid][Gang]));
  307. SendClientMessage(playerid, COLOR_GREEN, string);
  308. format(string, sizeof(string), "%s [ %d ] left %s.", GetPlayerNameEx(playerid), playerid, GetGangName(PlayerInfo[playerid][Gang]));
  309. SendClientMessageToAll(COLOR_GREEN, string);
  310. if(IsPlayerGangLeader(playerid))
  311. {
  312. format(Query, sizeof(Query), "DELETE FROM gangs WHERE owner = '%s';", GetPlayerNameEx(playerid));
  313. mysql_query(Query);
  314. format(Query, sizeof(Query), "UPDATE users SET gang = 0 WHERE gang = %d;", PlayerInfo[playerid][Gang]);
  315. mysql_query(Query);
  316. }
  317. format(Query, sizeof(Query), "UPDATE users SET gang = 0 WHERE username = '%s';", GetPlayerNameEx(playerid));
  318. PlayerInfo[playerid][Gang] = 0;
  319. mysql_query(Query);
  320. return 1;
  321. }
  322.  
  323.  
  324. command(deny, playerid, params[])
  325. {
  326. new string[128];
  327. if(PlayerInfo[playerid][Gang] != 0) return SendClientMessage(playerid, COLOR_YELLOW, "You are already in an gang.");
  328. if(Invite[playerid] == 0) return SendClientMessage(playerid, COLOR_YELLOW, "You have not received any gang invite.");
  329. format(string, sizeof(string), "You denyed the gang invite.");
  330. SendClientMessage(playerid, COLOR_GREEN, string);
  331. Invite[playerid] = 0;
  332. return 1;
  333. }
  334.  
  335. command(accept, playerid, params[])
  336. {
  337. new Query[100], string[128];
  338. if(PlayerInfo[playerid][Gang] != 0) return SendClientMessage(playerid, COLOR_YELLOW, "You are already in an gang.");
  339. if(Invite[playerid] == 0) return SendClientMessage(playerid, COLOR_YELLOW, "You have not received any gang invite.");
  340. format(Query, sizeof(Query), "UPDATE users SET gang = %d WHERE username = '%s';", Invite[playerid], GetPlayerNameEx(playerid));
  341. format(string, sizeof(string), "You are now an member of %s, type /retreat to leave the gang.", GetGangName(Invite[playerid]));
  342. SendClientMessage(playerid, COLOR_GREEN, string);
  343. format(string, sizeof(string), "%s [ %d ] is now an member of %s!", GetPlayerNameEx(playerid), playerid, GetGangName(Invite[playerid]));
  344. SendClientMessageToAll(COLOR_GREEN, string);
  345. PlayerInfo[playerid][Gang] = Invite[playerid];
  346. Invite[playerid] = 0;
  347. mysql_query(Query);
  348. return 1;
  349. }
  350.  
  351. command(invite, playerid, params[])
  352. {
  353. new pID, string[128];
  354. if(!IsPlayerGangLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You have to be gang leader to use this comamnd.");
  355. if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /invite [ Playerid / Name ]");
  356. if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_YELLOW, "This player isn't connected.");
  357. if(IsMySelf(playerid, pID)) return SendClientMessage(playerid, COLOR_YELLOW, "You cannot invite yourself.");
  358. if(PlayerInfo[pID][Gang] != 0) return SendClientMessage(playerid, COLOR_YELLOW, "This player is already in an gang.");
  359. if(Invite[pID] != 0 && Invite[pID] != PlayerInfo[playerid][Gang]) return SendClientMessage(playerid, COLOR_YELLOW, "This player is already invited by an other gang, please wait for the player to reject the invitation");
  360. if(Invite[pID] == PlayerInfo[playerid][Gang]) return SendClientMessage(playerid, COLOR_YELLOW, "You have already invited this player please stand by for input.");
  361. format(string, sizeof(string), "You were invited to join %s, type /accept or /deny .. W/e you feel like.", GetGangName(PlayerInfo[playerid][Gang]));
  362. SendClientMessage(pID, COLOR_GREEN, string);
  363. format(string, sizeof(string), "You invited %s to join your gang, please wait for the player to accept the invite.", GetPlayerNameEx(pID));
  364. SendClientMessage(playerid, COLOR_GREEN, string);
  365. Invite[pID] = PlayerInfo[playerid][Gang];
  366. return 1;
  367. }
  368.  
  369. command(kick, playerid, params[])
  370. {
  371. new pID, string[128], Query[100];
  372. if(!IsPlayerGangLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You have to be gang leader to use this comamnd.");
  373. if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /kick [ Playerid / Name ]");
  374. if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_YELLOW, "This player isn't connected.");
  375. if(IsMySelf(playerid, pID)) return SendClientMessage(playerid, COLOR_YELLOW, "You cannot kick yourself.");
  376. if(PlayerInfo[pID][Gang] != PlayerInfo[playerid][Gang]) return SendClientMessage(playerid, COLOR_YELLOW, "This player isn't an member of your gang.");
  377. format(Query, sizeof(Query), "UPDATE users SET gang = 0 WHERE username = '%s';", GetPlayerNameEx(pID));
  378. format(string, sizeof(string), "You were kicked out of the gang.");
  379. SendClientMessage(pID, COLOR_GREEN, string);
  380. format(string, sizeof(string), "%s [ %d ] were kicked out of %s.", GetPlayerNameEx(pID), pID, GetGangName(PlayerInfo[playerid][Gang]));
  381. SendClientMessageToAll(COLOR_GREEN, string);
  382. format(string, sizeof(string), "You kicked %s [ %d ] from your gang, if this was an mistake please reinvite the player with /invite.", GetPlayerNameEx(pID), pID);
  383. SendClientMessage(playerid, COLOR_GREEN, string);
  384. PlayerInfo[pID][Gang] = 0;
  385. mysql_query(Query);
  386. return 1;
  387. }
  388.  
  389. command(creategang, playerid, params[])
  390. {
  391. new string[128], gName[100], Query[200];
  392. if(PlayerInfo[playerid][Gang] != 0) return SendClientMessage(playerid, COLOR_YELLOW, "You are already an member of an gang, please quit that gang before creating a new one.");
  393. if(sscanf(params, "s[100]", gName)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /creategang [ Gang-name ].");
  394. if(CheckGangByName(gName)) return SendClientMessage(playerid, COLOR_YELLOW, "An gang with this name already exists.");
  395. format(Query, sizeof(Query), "INSERT INTO gangs (id, name, owner) VALUES (NULL, '%s', '%s');", gName, GetPlayerNameEx(playerid));
  396. format(string, sizeof(string), "You created an gang with name : %s, you were sat as owner of the gang.", gName);
  397. SendClientMessage(playerid, COLOR_GREEN, string);
  398. mysql_query(Query);
  399. PlayerInfo[playerid][Gang] = mysql_insert_id();
  400. format(Query, sizeof(Query), "UPDATE users SET gang = %d WHERE username = '%s';", PlayerInfo[playerid][Gang], GetPlayerNameEx(playerid));
  401. mysql_query(Query);
  402. return 1;
  403. }
Advertisement
Add Comment
Please, Sign In to add comment