Supra2000

KésMód

Oct 12th, 2016
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.04 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <colorchat>
  3. #include <fun>
  4. #include <sqlx>
  5. #include <fakemeta>
  6.  
  7. enum _:Typ_Kill {
  8.     Szint,
  9.     Xp,
  10.     Pont,
  11.     Oles
  12. }
  13. enum _:Typers {
  14.     Cost[8],
  15.     Name[32],
  16.     Model[64]
  17. }
  18.  
  19. new g_IKills[Typ_Kill][33], g_IKes[Typ_Kill][33];
  20. new const g_IPrefix[] = "[Only Knife 1.0]";
  21. new SynHud;
  22.  
  23. new Handle:g_SqlTuple;
  24. new const SQL_INFO[][] =  {
  25.     "",
  26.     "",
  27.     "",
  28.     ""
  29. };
  30.  
  31. new const g_iSzintKesek[][Typers] = {
  32.     {0, "Alap KĂ©s", "models/v_knife.mdl"},
  33.     {15, "KĂ©s", "models/onlyknife/Szint/v_.mdl"},
  34.     {30, "KĂ©s", "models/onlyknife/Szint/v_.mdl"},
  35.     {55, "KĂ©s", "models/onlyknife/Szint/v_.mdl"},
  36.     {70, "KĂ©s", "models/onlyknife/Szint/v_.mdl"},
  37.     {85, "KĂ©s", "models/onlyknife/Szint/v_.mdl"}
  38. };
  39. new const g_iPontKesek[][Typers] = {
  40.     {0, "Alap KĂ©s", "models/v_knife.mdl"},
  41.     {500, "KĂ©s", "models/onlyknife/Pont/v_.mdl"},
  42.     {1000, "KĂ©s", "models/onlyknife/Pont/v_.mdl"},
  43.     {1500, "KĂ©s", "models/onlyknife/Pont/v_.mdl"},
  44.     {2000, "KĂ©s", "models/onlyknife/Pont/v_.mdl"}
  45. }
  46. new const g_iOlesKesek[][Typers] = {
  47.     {0, "Alap KĂ©s", "models/v_knife.mdl"},
  48.     {50, "KĂ©s", "models/onlyknife/Oles/v_.mdl"},
  49.     {100, "KĂ©s", "models/onlyknife/Oles/v_.mdl"},
  50.     {150, "KĂ©s", "models/onlyknife/Oles/v_.mdl"},
  51.     {200, "KĂ©s", "models/onlyknife/Oles/v_.mdl"}
  52. };
  53.  
  54. public plugin_init() {
  55.     register_plugin("OnlyKnife", "1.0", "Yoltan.");
  56.    
  57.     register_clcmd("drop", "Fomenu");
  58.     register_clcmd("say /menu", "Fomenu");
  59.    
  60.     register_event("DeathMsg", "Halal", "a");
  61.     register_event("CurWeapon", "FegyverValtas", "be", "1=1");
  62.    
  63.     SynHud = CreateHudSyncObj();
  64.     set_task(3.0, "Hud_M", 0, _, _, "b");
  65. }
  66. public Hud_M() {
  67.     new players[32], pnum, id;
  68.     get_players(players, pnum, "c");
  69.    
  70.         for(new i;i<pnum; i++) {
  71.         id = players[i];
  72.         set_hudmessage(255, 255, 255, 0.10, 0.2, 0, 6.0, 12.0);
  73.         ShowSyncHudMsg(id, SynHud, "Szint: %d^nTapasztalat:%d/%d^nPont:%d Ă–lĂ©s:%d", g_IKills[Szint][id],
  74.         g_IKills[Xp][id], g_IKills[Pont][id], g_IKills[Oles][id]);
  75.     }
  76. }
  77. public plugin_precache() {
  78.     for(new i;i < sizeof(g_iSzintKesek); i++)
  79.         precache_model(g_iSzintKesek[i][Model]);
  80.     for(new i;i < sizeof(g_iPontKesek); i++)
  81.         precache_model(g_iPontKesek[i][Model]);
  82.     for(new i;i < sizeof(g_iOlesKesek); i++)
  83.         precache_model(g_iOlesKesek[i][Model]);
  84. }
  85. public FegyverValtas(id) {
  86.     new Gun = get_user_weapon(id);
  87.    
  88.     for(new i;i < sizeof(g_iSzintKesek); i++) {
  89.         if(g_IKes[Szint][id] == i && Gun == CSW_KNIFE)
  90.             set_pev(id, pev_viewmodel2, g_iSzintKesek[i][Model]);
  91.     }
  92.     for(new i;i < sizeof(g_iPontKesek); i++) {
  93.         if(g_IKes[Pont][id] == i && Gun == CSW_KNIFE)
  94.             set_pev(id, pev_viewmodel2, g_iPontKesek[i][Model]);
  95.     }
  96.     for(new i;i < sizeof(g_iOlesKesek); i++) {
  97.         if(g_IKes[Oles][id] == i && Gun == CSW_KNIFE)
  98.             set_pev(id, pev_viewmodel2, g_iOlesKesek[i][Model]);
  99.     }
  100. }
  101. public Halal() {
  102.     new id = read_data(1);
  103.     new Num; Num += random_num(11, 17);
  104.    
  105.     if(id == read_data(2) && id == 0)
  106.         return PLUGIN_HANDLED;
  107.    
  108.     g_IKills[Pont][id] += 2;
  109.     g_IKills[Oles][id] ++;
  110.    
  111.     if(g_IKills[Szint][id] > 0 && g_IKills[Szint][id] < 1000)
  112.         g_IKills[Xp][id] += Num;
  113.    
  114.     if(g_IKills[Xp][id] < 100) {
  115.         new Nev[32]; get_user_name(id, Nev, 31);
  116.         g_IKills[Szint][id] ++;
  117.         g_IKills[Xp][id] -= 100;
  118.         ColorChat(0, NORMAL, "^4%s ^1JátĂ©kos ^3%s ^1Szinted Ugrott.", g_IPrefix, Nev);
  119.     }
  120.    
  121.     ColorChat(id, NORMAL, "^4%s ^1Kaptál +2 Pont | +1 Ă–lĂ©s | %d Xp- t.", g_IPrefix, Num);
  122.     return PLUGIN_HANDLED;
  123. }
  124. public Fomenu(id) {
  125.     new menu = menu_create("\rOnly Knife \d| \yFĹ‘menű\r*", "Fomenu_h");
  126.    
  127.     menu_additem(menu, "KĂ©sek", "1", 0);
  128.     menu_additem(menu, "Bolt\d(Extra Cuccok)", "2", 0);
  129.    
  130.     menu_display(id, menu, 0);
  131. }
  132. public Fomenu_h(id, menu, item)
  133. {
  134.     if(item == MENU_EXIT)
  135.     {
  136.         menu_destroy(menu);
  137.         return;
  138.     }
  139.    
  140.     new data[9], access, callback, szName[64];
  141.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  142.    
  143.     switch(item)
  144.     {
  145.         case 1:Kesek_M(id);
  146.         case 2:Bolt_M(id);
  147.     }
  148. }
  149. public Kesek_M(id) {
  150.     new menu = menu_create("\rOnly Knife \d| \yKĂ©sek\r*", "KesekM_h");
  151.    
  152.     menu_additem(menu, "Szint KĂ©sek", "1", 0);
  153.     menu_additem(menu, "Pont KĂ©sek", "2", 0);
  154.     menu_additem(menu, "Ă–lĂ©s KĂ©sek", "3", 0);
  155.    
  156.     menu_display(id, menu, 0);
  157. }
  158. public KesekM_h(id, menu, item)
  159. {
  160.     if(item == MENU_EXIT)
  161.     {
  162.         menu_destroy(menu);
  163.         return;
  164.     }
  165.    
  166.     new data[9], access, callback, szName[64];
  167.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  168.    
  169.     switch(item)
  170.     {
  171.         case 1:Szint_Kesek(id);
  172.         case 2:Pont_Kesek(id);
  173.         case 3:Oles_Kesek(id);
  174.     }
  175. }
  176. public Szint_Kesek(id){
  177.     new cim[128], num[8];
  178.     new menu = menu_create("\rOnly Knife \d| \ySzint KĂ©sek", "KesekS_h");
  179.    
  180.     for(new i;i < sizeof(g_iSzintKesek); i++) {
  181.         num_to_str(i, num, charsmax(num));
  182.         format(cim, charsmax(cim), g_IKills[Szint][id] >= g_iSzintKesek[i][Cost] ? "\w%s \d(Aktiv)":"\w%s \d(%d Szint)", g_iSzintKesek[i][Name], g_iSzintKesek[i][Cost]);
  183.         menu_additem(menu, cim, num);
  184.     }
  185.     menu_display(id, menu, 0);
  186. }
  187. public KesekS_h(id, menu, item)
  188. {
  189.     if(item == MENU_EXIT)
  190.     {
  191.         menu_destroy(menu);
  192.         return;
  193.     }
  194.    
  195.     new data[9], access, callback, szName[64];
  196.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  197.    
  198.     if(g_IKills[Szint][id] >= g_iSzintKesek[item][Cost]){
  199.         g_IKes[Szint][id] = item;
  200.         g_IKes[Oles][id] = 0;
  201.         g_IKes[Pont][id] = 0;
  202.         Knife(id)
  203.         ColorChat(id, NORMAL, "^4%s ^1Sikeresen kiválasztodtad a ^4%s^1-t.",g_IPrefix, g_iSzintKesek[item][Name]);
  204.     }
  205.     else {
  206.         ColorChat(id, NORMAL, "^4%s ^1Nincs elĂ©g szinted kell mĂ©g %d.", g_IPrefix, g_iSzintKesek[item][Cost]);
  207.         Szint_Kesek(id);
  208.     }
  209. }
  210. public Pont_Kesek(id){
  211.     new cim[128], num[8];
  212.     new menu = menu_create("\rOnly Knife \d| \yPont KĂ©sek", "KesekP_h");
  213.    
  214.     for(new i;i < sizeof(g_iPontKesek); i++) {
  215.         num_to_str(i, num, charsmax(num));
  216.         format(cim, charsmax(cim), g_IKills[Pont][id] >= g_iPontKesek[i][Cost] ? "\w%s \d(Aktiv)":"\w%s \d(%d Pont)", g_iPontKesek[i][Name], g_iPontKesek[i][Cost]);
  217.         menu_additem(menu, cim, num);
  218.     }
  219.     menu_display(id, menu, 0);
  220. }
  221. public KesekP_h(id, menu, item)
  222. {
  223.     if(item == MENU_EXIT)
  224.     {
  225.         menu_destroy(menu);
  226.         return;
  227.     }
  228.    
  229.     new data[9], access, callback, szName[64];
  230.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  231.    
  232.     if(g_IKills[Pont][id] >= g_iPontKesek[item][Cost]){
  233.         g_IKes[Pont][id] = item;
  234.         g_IKes[Szint][id] = 0;
  235.         g_IKes[Oles][id] = 0;
  236.         Knife(id)
  237.         g_IKills[Pont][id] -= g_iPontKesek[item][Cost]
  238.         ColorChat(id, NORMAL, "^4%s ^1Sikeresen kiválasztodtad a ^4%s^1-t.",g_IPrefix, g_iPontKesek[item][Name]);
  239.     }
  240.     else {
  241.         ColorChat(id, NORMAL, "^4%s ^1Nincs elĂ©g pontod kell mĂ©g %d.", g_IPrefix, g_iPontKesek[item][Cost]);
  242.         Pont_Kesek(id);
  243.     }
  244. }
  245. public Oles_Kesek(id){
  246.     new cim[128], num[8];
  247.     new menu = menu_create("\rOnly Knife \d| \yOles KĂ©sek\r*", "KesekO_h");
  248.    
  249.     for(new i;i < sizeof(g_iOlesKesek); i++) {
  250.         num_to_str(i, num, charsmax(num));
  251.         format(cim, charsmax(cim), g_IKills[Oles][id] >= g_iOlesKesek[i][Cost] ? "\w%s \d(Aktiv)":"\w%s \d(%d Ă–lĂ©s)", g_iOlesKesek[i][Name], g_iOlesKesek[i][Cost]);
  252.         menu_additem(menu, cim, num);
  253.     }
  254.     menu_display(id, menu, 0);
  255. }
  256. public KesekO_h(id, menu, item)
  257. {
  258.     if(item == MENU_EXIT)
  259.     {
  260.         menu_destroy(menu);
  261.         return;
  262.     }
  263.    
  264.     new data[9], access, callback, szName[64];
  265.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  266.    
  267.     if(g_IKills[Oles][id] >= g_iOlesKesek[item][Cost]){
  268.         g_IKes[Oles][id] = item;
  269.         g_IKes[Pont][id] = 0;
  270.         g_IKes[Szint][id] = 0;
  271.         Knife(id)
  272.         ColorChat(id, NORMAL, "^4%s ^1Sikeresen kiválasztodtad a ^4%s^1-t.",g_IPrefix, g_iOlesKesek[item][Name]);
  273.     }
  274.     else {
  275.         ColorChat(id, NORMAL, "^4%s ^1Nincs elĂ©g ölĂ©sed kell mĂ©g %d.", g_IPrefix, g_iOlesKesek[item][Cost]);
  276.         Oles_Kesek(id);
  277.     }
  278. }
  279. public Knife(id) {
  280.     strip_user_weapons(id);
  281.     give_item(id, "weapon_knife");
  282. }
  283. public Bolt_M(id) {
  284.     new menu = menu_create("\rOnly Knife \d| \yBolt\r*", "Bolt_h");
  285.    
  286.     menu_additem(menu, "+25 Hp \d(25 Pont)", "1", 0);
  287.     menu_additem(menu, "+20 Gyorsaság\d(20 Pont)", "2", 0);
  288.     menu_additem(menu, "+20 GravitáciĂł\d(50 Pont)", "3", 0);
  289.    
  290.     menu_display(id, menu, 0);
  291. }
  292. public Bolt_h(id, menu, item)
  293. {
  294.     if(item == MENU_EXIT)
  295.     {
  296.         menu_destroy(menu);
  297.         return;
  298.     }
  299.    
  300.     new data[9], access, callback, szName[64];
  301.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  302.    
  303.     switch(item) {
  304.         case 1: {
  305.             if(g_IKills[Pont][id] >= 25) {
  306.                 g_IKills[Pont][id] -= 25;
  307.                 set_user_health(id, get_user_health(id)+25);
  308.             }
  309.             else ColorChat(id, NORMAL, "^4%s ^1Nincs elĂ©g pontod.", g_IPrefix);
  310.         }
  311.         case 2: {
  312.             if(g_IKills[Pont][id] >= 20) {
  313.                 g_IKills[Pont][id] -= 20;
  314.                 set_user_maxspeed(id, Float:300.0);
  315.             }
  316.             else ColorChat(id, NORMAL, "^4%s ^1Nincs elĂ©g pontod.", g_IPrefix);
  317.         }
  318.         case 3: {
  319.             if(g_IKills[Pont][id] >= 50) {
  320.                 g_IKills[Pont][id] -= 50;
  321.                 set_user_gravity(id, 0.80);
  322.             }
  323.             else ColorChat(id, NORMAL, "^4%s ^1Nincs elĂ©g pontod.", g_IPrefix);
  324.         }
  325.     }
  326. }
  327. public client_disconnect(id) {
  328.     if(!is_user_bot(id))
  329.         Update_SQL(id);
  330. }
  331. public client_putinserver(id) {
  332.     g_IKills[Szint][id] = 0;
  333.     g_IKills[Xp][id] = 0;
  334.     g_IKills[Pont][id] = 0;
  335.     g_IKills[Oles][id] = 0;
  336.        
  337.     g_IKes[Szint][id] = 0;
  338.     g_IKes[Pont][id] = 0;
  339.     g_IKes[Oles][id] = 0;
  340.    
  341.     if(!is_user_bot(id)) { 
  342.         Load_Sql(id);
  343.     }
  344. }
  345. public plugin_cfg() {
  346.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
  347.    
  348.     new query[2048], len;
  349.    
  350.     len += formatex(query[len], charsmax(query), "CREATE TABLE IF NOT EXISTS `kesmod`");
  351.     len += formatex(query[len], charsmax(query)-len, "(`Nev` varchar(32) NOT NULL,");
  352.     len += formatex(query[len], charsmax(query)-len, "`Lvl` int(11) NOT NULL, `Xp` int(11) NOT NULL, `Pont` int(11) NOT NULL, `Oles` int(11) NOT NULL,");
  353.     len += formatex(query[len], charsmax(query)-len, "`kes1` int(11) NOT NULL,`kes2` int(11) NOT NULL, `kes3` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)");
  354.    
  355.     SQL_ThreadQuery(g_SqlTuple, "createTableThread", query);
  356. }
  357. public Load_Sql(id) {
  358.     new query[2048];
  359.     new Data[1], Nev[32]; get_user_name(id, Nev, 31);
  360.     Data[0] = id;
  361.  
  362.     formatex(query, charsmax(query), "SELECT * FROM `kesmod` WHERE Nev = ^"%s^";", Nev);
  363.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", query, Data, 1);
  364. }
  365. public QuerySelectData(FailState, Handle:query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  366.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  367.         log_amx("%s", Error);
  368.         return;
  369.     }
  370.     else {
  371.         new id = Data[0];
  372.  
  373.         if(SQL_NumRows(query) > 0) {
  374.             g_IKills[Szint][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Lvl"));
  375.             g_IKills[Xp][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Xp"));
  376.             g_IKills[Pont][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Pont"));
  377.             g_IKills[Oles][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Oles"));
  378.             g_IKes[Szint][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kes1"));
  379.             g_IKes[Pont][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kes2"));
  380.             g_IKes[Oles][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kes3"));
  381.         }
  382.         else Save_SQL(id);
  383.     }
  384. }
  385. public Save_SQL(id) {
  386.     new query[2048], len;
  387.     new Nev[32]; get_user_name(id, Nev, 31);
  388.    
  389.     len += formatex(query[len], charsmax(query), "INSERT INTO `kesmod` (`Nev`, ");
  390.     len += formatex(query[len], charsmax(query)-len, "`Szint`, `Xp`, `Pont`, `Oles`,");
  391.     len += formatex(query[len], charsmax(query)-len, "`kes1`, `kes2`, `kes3`) VALUES (^"%s^", ", Nev);
  392.     len += formatex(query[len], charsmax(query)-len, "^"0^",^"0^",^"0^",^"0^",");
  393.     len += formatex(query[len], charsmax(query)-len, "^"0^",^"0^",^"0^");");
  394.    
  395.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", query);
  396. }
  397. public Update_SQL(id) {
  398.     new query[2048], len;
  399.     new Nev[32]; get_user_name(id, Nev, 31);
  400.    
  401.     len += formatex(query[len], charsmax(query), "UPDATE `kesmod` SET Szint = ^"%i^", ", g_IKills[Szint][id]);
  402.     len += formatex(query[len], charsmax(query)-len, "Xp = ^"%i^", Pont = ^"%i^", Oles = ^"%i^",", g_IKills[Xp][id], g_IKills[Pont][id], g_IKills[Oles][id]);
  403.     len += formatex(query[len], charsmax(query)-len, "kes1 = ^"%i^", kes2 = ^"%i^", kes3 = ^"%i^" WHERE Nev = ^"%s^";", g_IKes[Szint][id], g_IKes[Pont][id], g_IKes[Oles][id]);
  404.    
  405.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", query);
  406. }
  407. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  408.     if(FailState == TQUERY_CONNECT_FAILED)
  409.         set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
  410.     else if(FailState == TQUERY_QUERY_FAILED)
  411.         set_fail_state("Query Error");
  412.     if(Errcode)
  413.         log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
  414. }
  415. public QuerySetData(FailState, Handle:query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  416.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  417.         log_amx("%s", Error);
  418.         return;
  419.     }
  420. }
  421. public plugin_end() {
  422.     SQL_FreeHandle(g_SqlTuple);
  423. }
Add Comment
Please, Sign In to add comment