Guest User

Basic MOde MySQL Beta by iRaiDeN

a guest
May 17th, 2014
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.30 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #include <sscanf2>
  4. #include <zcmd>
  5.  
  6. /* =-=-=-=-=-= Mode settings =-=-=-=-=-=-==--=- */
  7.  
  8.         /* MySQL Settings */
  9.  
  10. #define DB_SERVER   "127.0.0.1"
  11. #define DB_USER     "root"
  12. #define DB_PASS     ""
  13. #define DB_DB       "bm" //bm = Basic Mode
  14.  
  15. #define MAX_TABLES  \
  16.                         (1) //Change it!
  17.  
  18.         /* Propties Mode */
  19.  
  20. #define MODE_CREATOR    "iRaiDeN"
  21. #define MODE_DATA_CREATED   "17/05/2014"
  22. #define MODE_NAME   "BasicMode MySQL V1"
  23.  
  24.         /* Sever CFG Settings */
  25.  
  26. #define SLOTS   \
  27.                     "30"
  28. #define RCON    \
  29.                     "basicmode1212"
  30. #define PORT    \
  31.                     "7777"
  32. #define HOST    \
  33.                     "Basic Mode - MySQL!"
  34.                    
  35.         /* Another Defines */
  36.  
  37. #pragma dynamic 42572
  38.  
  39.         /* Dialogs Defines */
  40.  
  41. #define DIALOG_LOGIN \
  42.                             (1)
  43. #define DIALOG_REGISTER \
  44.                             (2)
  45. #define DIALOG_STATS    \
  46.                             (3)
  47.  
  48. /* =-=-=-=-=-= Mode settings =-=-=-=-=-=-==--=- */
  49.  
  50. /* =-=-=-=-=-= Mode Enums =-=-=-=-=-=-=-=-=-=-=-= */
  51.  
  52.         /* Database Create Enum */
  53.  
  54. enum databaseEnum {
  55.     db_name[37],
  56.     db_info[128]
  57. }
  58.  
  59. enum playerEnum {
  60.     pName[27],
  61.     pPassword[26],
  62.     pKills,
  63.     pDeath,
  64.     pLevel,
  65.     bool:logged
  66. }
  67.  
  68. enum teleportEnum
  69. {
  70.         Teleport[40],
  71.         TMessage[128],
  72.         Float:PosX,
  73.         Float:PosY,
  74.         Float:PosZ,
  75.         Float:PosA,
  76.         Float:PosVX,
  77.         Float:PosVY,
  78.         Float:PosVZ,
  79.         Float:PosVA,
  80.         TInterior,
  81.         TVirtualWorld,
  82.         VehOn
  83. }
  84.  
  85. /* =-=-=-=-=-= Mode News =-=-=-=-=-=-=-=-=-=-=-= */
  86.  
  87.         /* Database New */
  88.  
  89. new
  90.     dbHandle,
  91.     gQuery[357],
  92.     gBuffer[256],
  93.     pInfo[MAX_PLAYERS][playerEnum],
  94.     databaseArray[MAX_TABLES][databaseEnum] = {
  95.         {"accounts","username varchar(34),password varchar(26),kills int,death int,level int"}
  96.         // Example you continue, you can upgrade the mode!
  97.         // {"clans","clanid int,clanplayers int,...}
  98.     };
  99. new Float:RandPlayerSpawn[][3] = {
  100.     {1958.3783,1343.1572,15.3746},{1705.2347,1025.6808,10.8203},
  101.     {2199.6531,1393.3678,10.8203},{2483.5977,1222.0825,10.8203},
  102.     {2637.2712,1129.2743,11.1797},{2000.0106,1521.1111,17.0625},
  103.     {2024.8190,1917.9425,12.3386},{2261.9048,2035.9547,10.8203},
  104.     {2262.0986,2398.6572,10.8203},{2244.2566,2523.7280,10.8203},
  105.     {2335.3228,2786.4478,10.8203},{2150.0186,2734.2297,11.1763},
  106.     {2158.0811,2797.5488,10.8203},{1969.8301,2722.8564,10.8203},
  107.     {1652.0555,2709.4072,10.8265},{1564.0052,2756.9463,10.8203},
  108.     {1271.5452,2554.0227,10.8203},{1441.5894,2567.9099,10.8203},
  109.     {1480.6473,2213.5718,11.0234},{1400.5906,2225.6960,11.0234},
  110.     {1598.8419,2221.5676,11.0625},{1318.7759,1251.3580,10.8203},
  111.     {1558.0731,1007.8292,10.8125},{373.2678,-2080.8015,7.8359},
  112.     {689.5941,-1275.9441,13.5593},{1546.3545,-1676.3113,13.5622},
  113.     {2495.5012,-1687.9529,13.5170},{2058.1328,826.6031,6.7909},
  114.     {2236.6060,2453.8743,10.7037},{1383.6451,2184.9885,11.0234},
  115.     {-2466.1191,2248.9255,4.8003},{-2575.6404,1102.0094,55.5781},
  116.     {-1921.6219,297.1514,41.0469},{-2672.0693,378.705,4.3672},
  117.     {-672.1888,-710.7643,80.4041},{-2509.3237,-714.5736,139.3203},
  118.     {154.2144,-1951.7378,51.3438},{1924.2438,-1200.014,20.0214},
  119.     {1656.4275,-1637.2434,83.7813},{2871.9111,-1589.3542,22.4428},
  120.     {2767.9304,-1177.9412,69.8797},{2269.293,-1112.235,37.9766},
  121.     {1237.834,-739.4084,95.7626},{-2797.1052,1219.3676,20.3759},
  122.     {-2130.6887,917.5008,79.8516},{-1793.0884,485.8771,26.1188},
  123.     {-1220.6179,448.9533,7.1875},{502.872,-1447.0157,15.0539},
  124.     {2260.3152,1111.059,29.375},{2096.9844,1267.7301,10.8203},
  125.     {1927.6123,1591.2813,10.6325},{1293.9065,2521.8823,10.6719},
  126.     {-294.0192,1896.5623,42.2891},{-714.9441,2045.9653,60.3906},
  127.     {-262.3136,2225.7766,110.414},{453.3871,2505.0505,19.9762},
  128.     {1307.5275,2092.231,10.8441},{2148.5249,1683.3619,10.8203}
  129. };
  130. new TeleArray[][teleportEnum] = {
  131.     {"/Ap","Ap\t",1636.3920,1614.6687,10.8203,94.4338,1637.6541,1579.3475,10.9127,86.8262,0,0,1},
  132.     {"/Lv","Lv\t",2012.8467,1229.0613,10.8203,273.3840,2045.7782,1252.4523,10.4830,179.4893,0,0,1},
  133.     {"/Race","Race\t",-2593.6106,1126.8113,55.6933,247.1823,-2588.2622,1095.0531,56.1371,329.7149,0,0,1},
  134.     {"/Sf","Sf\t",-2663.4424,373.0685,4.1468,2.1954,-2663.4424,373.0685,4.1468,2.1954,0,0,1},
  135.     {"/Ls","LS\t",1477.8057,-1734.8749,13.3828,90.7683,1477.8057,-1734.8749,13.3828,90.7683,0,0,1},
  136.     {"/Ramp","Ramp\t",1859.3246, -1381.7324, 13.5625,0.0000,1859.3246, -1381.7324, 13.5625,0.0000,0,0,1}
  137. };
  138.  
  139. /* =-=-=-=-=-= Mode News =-=-=-=-=-=-=-=-=-=-=-= */
  140.  
  141. /* =-=-=-=-=-= Mode forwards =-=-=-=-=-=-=-=-=-=-=-= */
  142.  
  143.         /* Database forward/s */
  144.  
  145. forward checkPlayer(playerid);
  146. forward savePlayerData ();
  147.  
  148. /* =-=-=-=-=-= Mode forwards =-=-=-=-=-=-=-=-=-=-=-= */
  149.  
  150. main(){}
  151.  
  152. public OnGameModeInit()
  153. {
  154.     dbHandle = mysql_connect(DB_SERVER,DB_USER,DB_DB,DB_PASS);
  155.     if(!dbHandle) print("<MySQL> database not respond!");
  156.     else print("<MySQL> mysql respond!");
  157.     for(new i = 0; i != MAX_TABLES; i++)
  158.     {
  159.         format(gQuery,357,"CREATE TABLE IF NOT EXISTS %s(%s)",databaseArray[i][db_name],databaseArray[i][db_info]);
  160.         mysql_function_query(dbHandle,gQuery,false,"","");
  161.     }
  162.     for(new i; i != 299; i++) AddPlayerClass(i,0.0,0.0,0.0,-1,-1,-1,-1,-1,-1,-1);
  163.     SetGameModeText(MODE_NAME);
  164.     SendRconCommand("maxplayers "SLOTS"");
  165.     SendRconCommand("rcon_password "RCON"");
  166.     SendRconCommand("port "PORT"");
  167.     SendRconCommand("hostname "HOST"");
  168.     /* MySQL save information */
  169.     SetTimer("savePlayerData",60*1000*5,true);
  170.     /* ===== choose skin arena ====== */
  171.     CreateObject(11496, 445.73, 302.49, 0.94, 0.00, 0.00, 146.00);
  172.     CreateObject(3524, 441.02, 302.63, 3.32, 0.00, 0.00, 238.00);
  173.     CreateObject(3524, 443.94, 306.69, 3.54, 0.00, 0.00, 238.00);
  174.     CreateObject(3534, 438.48, 298.40, 2.60, 0.00, 0.00, 0.00);
  175.     CreateObject(3534, 446.53, 310.67, 2.82, 0.00, 0.00, 0.00);
  176.     CreateObject(16114, 465.50, 281.00, 0.50, 0.00, 0.00, 164.00);
  177.     CreateObject(16114, 473.10, 288.10, 0.50, 0.00, 0.00, 176.00);
  178.     CreateObject(7916, 459.10, 304.60, 5.00, 2.00, 0.00, 226.00);
  179.     CreateObject(7916, 455.80, 299.90, 5.00, 2.00, 0.00, 226.00);
  180.     CreateObject(7916, 461.70, 308.30, 5.00, 2.00, 0.00, 226.00);
  181.     CreateObject(19076, 451.29, 307.62, 0.90, 0.00, 0.00, 57.61);
  182.     CreateObject(19076, 442.97, 295.33, 1.03, 0.00, 0.00, 42.58);
  183.     CreateObject(3511, 446.64, 301.37, -0.79, 0.00, 0.00, 0.00);
  184.     CreateObject(3528, 445.31, 302.22, 11.51, 0.00, 0.00, 146.00);
  185.     CreateObject(19343, 451.13, 307.74, 1.61, 0.00, 0.00, 0.00);
  186.     CreateObject(19343, 450.61, 308.39, 1.63, 0.00, 0.00, 0.00);
  187.     CreateObject(19342, 450.26, 307.60, 1.60, 0.00, 0.00, 0.00);
  188.     CreateObject(19343, 443.13, 296.07, 1.64, 0.00, 0.00, 0.00);
  189.     CreateObject(19342, 442.33, 295.78, 1.55, 0.00, 0.00, 0.00);
  190.     CreateObject(19342, 442.60, 296.50, 1.55, 0.00, 0.00, 0.00);
  191.     return 1;
  192. }
  193.  
  194. public OnPlayerConnect(playerid)
  195. {
  196.     GetPlayerName(playerid,pInfo[playerid][pName],27);
  197.     format(gQuery,357,"SELECT * FROM accounts WHERE username='%s'",pInfo[playerid][pName]);
  198.     pInfo[playerid][logged] = false;
  199.     mysql_function_query(dbHandle,gQuery,true,"checkPlayer","d",playerid);
  200.     return 1;
  201. }
  202.  
  203. public OnPlayerDeath(playerid,killerid)
  204. {
  205.     pInfo[killerid][pKills]++;
  206.     pInfo[playerid][pDeath]++;
  207.     if(pInfo[killerid][pKills] % 50 == 0)
  208.     {
  209.         pInfo[killerid][pLevel]++;
  210.         format(gBuffer,256,"!%d :יפה עלית רמה בהצלחה, עלית לרמה",pInfo[killerid][pLevel]);
  211.         SendClientMessage(killerid,-1,gBuffer);
  212.     }
  213. }
  214.  
  215. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  216. {
  217.     switch(dialogid)
  218.     {
  219.         case (DIALOG_LOGIN):
  220.         {
  221.             if(!response) return Kick(playerid);
  222.             if(!strcmp(inputtext,pInfo[playerid][pPassword]))
  223.             {
  224.                 SendClientMessage(playerid,-1,"{ffffff}[{c2ed14}Success{ffffff}]: התחברת בהצלחה");
  225.                 pInfo[playerid][logged] = true;
  226.             } else {
  227.                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Welcome Back!","{ffffff}!הקלדת סיסמא שגויה","Login","Logout");
  228.             }
  229.             return 1;
  230.         }
  231.         case (DIALOG_REGISTER):
  232.         {
  233.             if(!response) return Kick(playerid);
  234.             if(strlen(inputtext) < 7 || strlen(inputtext) > 17) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Welcome!","Error & Please type an password with 7-15 charaters!","Register","Logout");
  235.             mysql_real_escape_string(inputtext,pInfo[playerid][pPassword]);
  236.             format(gQuery,357,"INSERT INTO accounts (username,password,kills,death,level) VALUES('%s','%s','0','0','1')",pInfo[playerid][pName],inputtext);
  237.             mysql_function_query(dbHandle,gQuery,false,"","");
  238.             pInfo[playerid][logged] = true;
  239.             SendClientMessage(playerid,-1,"{ffffff}----- {c2ed14}Account Information {ffffff}-----");
  240.             format(gBuffer,256,"{c2ed14}Username{ffffff}: %s",pInfo[playerid][pName]);
  241.             SendClientMessage(playerid,-1,gBuffer);
  242.             format(gBuffer,256,"{c2ed14}Password{ffffff}: %s",inputtext);
  243.             SendClientMessage(playerid,-1,gBuffer);
  244.             SendClientMessage(playerid,-1,"{ffffff}----- {c2ed14}Account Information {ffffff}-----");
  245.         }
  246.     }
  247.     return 1;
  248. }
  249.  
  250. public OnPlayerRequestClass(playerid)
  251. {
  252.     if(!pInfo[playerid][logged]) return 0;
  253.     SetPlayerPos(playerid, 442.5924,304.2280,2.1400);
  254.     SetPlayerFacingAngle(playerid, 51.6283);
  255.     SetPlayerCameraPos(playerid, 425.6743,314.9246,4.1639);
  256.     SetPlayerCameraLookAt(playerid, 443.8711,304.3779,2.1400);
  257.     return 1;
  258. }
  259.  
  260. public OnPlayerRequestSpawn(playerid)
  261. {
  262.     if(!pInfo[playerid][logged]) return 0;
  263.     return 1;
  264. }
  265.  
  266. COMMAND:stats(playerid,params[])
  267. {
  268.     if(!strlen(params))
  269.     {
  270.         format(gBuffer,256,"\t{c2ed14}User Static\n\nUsername{ffffff}: %s\n{c2ed14}Kills{ffffff}: %d\n{c2ed14}Death{ffffff}: %d\n{c2ed14}Level{ffffff}: %d",pInfo[playerid][pName],pInfo[playerid][pKills],pInfo[playerid][pDeath],pInfo[playerid][pLevel]);
  271.         ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Your stats",gBuffer,"אישור","");
  272.     } else {
  273.         if(sscanf(params,"u",params[0]))
  274.             return SendClientMessage(playerid,-1,"Usage:/Stats [ID]");
  275.         format(gBuffer,256,"\t{c2ed14}User Static\n\nUsername{ffffff}: %s\n{c2ed14}Kills{ffffff}: %d\n{c2ed14}Death{ffffff}: %d\n{c2ed14}Level{ffffff}: %d",pInfo[params[0]][pName],pInfo[params[0]][pKills],pInfo[params[0]][pDeath],pInfo[params[0]][pLevel]);
  276.         ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Your stats",gBuffer,"אישור","");
  277.     }
  278.     return 1;
  279. }
  280.  
  281. COMMAND:modeinfo(playerid,params[])
  282. {
  283.     SendClientMessage(playerid,-1,"{ffffff}----- {c2ed14}Mode Information {ffffff}-----");
  284.     format(gBuffer,256,"{c2ed14}Mode Creator{ffffff}: %s",MODE_CREATOR);
  285.     SendClientMessage(playerid,-1,gBuffer);
  286.     format(gBuffer,256,"{c2ed14}Data of Created mode{ffffff}: %s",MODE_DATA_CREATED);
  287.     SendClientMessage(playerid,-1,gBuffer);
  288.     SendClientMessage(playerid,-1,"{ffffff}----- {c2ed14}Mode Information {ffffff}-----");ש
  289.     return 1;
  290. }
  291.  
  292. public OnPlayerSpawn(playerid)
  293. {
  294.     SetPlayerInterior(playerid,0);
  295.     SetPlayerVirtualWorld(playerid,0);
  296.     new RndSpawn = random(sizeof(RandPlayerSpawn));
  297.     SetPlayerPos(playerid, RandPlayerSpawn[RndSpawn][0], RandPlayerSpawn[RndSpawn][1], RandPlayerSpawn[RndSpawn][2]);
  298.     return 1;
  299. }
  300.  
  301. public OnPlayerCommandReceived(playerid,cmdtext[])
  302. {
  303.     for(new i = 0; i<sizeof(TeleArray); i++)
  304.     {
  305.         if(!strcmp(cmdtext, TeleArray[i][Teleport], true))
  306.         {
  307.             format(gBuffer,40,"~b~~h~ ] ~R~ %s~b~~h~ ]",TeleArray[i][TMessage]);
  308.             GameTextForPlayer(playerid,gBuffer,3000,4);
  309.             if(IsPlayerInAnyVehicle(playerid) && TeleArray[i][VehOn])
  310.             {
  311.                 SetVehiclePos(GetPlayerVehicleID(playerid), TeleArray[i][PosVX], TeleArray[i][PosVY], TeleArray[i][PosVZ]);
  312.                 SetVehicleZAngle(GetPlayerVehicleID(playerid), TeleArray[i][PosVA]);
  313.                 } else {
  314.  
  315.                 SetPlayerPos(playerid, TeleArray[i][PosX], TeleArray[i][PosY], TeleArray[i][PosZ]);
  316.                 SetPlayerFacingAngle(playerid, TeleArray[i][PosA]);
  317.             }
  318.  
  319.             SetPlayerInterior(playerid,TeleArray[i][TInterior]);
  320.             SetPlayerVirtualWorld(playerid,TeleArray[i][TVirtualWorld]);
  321.             SetCameraBehindPlayer(playerid);
  322.             return PlayerPlaySound(playerid,1063,0.0,0.0,0.0);
  323.         }
  324.     }
  325.     return 1;
  326. }
  327.  
  328. public savePlayerData()
  329. {
  330.     for(new i, j = GetMaxPlayers(); i != j; i++)
  331.     {
  332.         format(gQuery,356,"UPDATE accounts SET kills='%d',death='%d',level='%d'",pInfo[i][pKills],pInfo[i][pDeath],pInfo[i][pLevel]);
  333.         mysql_function_query(dbHandle,gQuery,false,"","");
  334.     }
  335.     SendClientMessageToAll(-1,"{ffffff}[{c2ed14}Auto Saved{ffffff}]: כל הפרטים של כל השחקנים נשמרו אוטמטית");
  336. }
  337.  
  338. public checkPlayer(playerid)
  339. {
  340.     new rows,fields;
  341.     cache_get_data(rows,fields,dbHandle);
  342.     if(rows != 0)
  343.     {
  344.         cache_get_field_content(0,"password",pInfo[playerid][pPassword],dbHandle,26);
  345.         pInfo[playerid][pKills] = cache_get_field_content_int(0,"kills",dbHandle);
  346.         pInfo[playerid][pDeath] = cache_get_field_content_int(0,"death",dbHandle);
  347.         pInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbHandle);
  348.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Welcome Back!","{ffffff}שלום משתמש יקר, המשתמש שלך נמצא במסד, אז כדי להתחבר נא הקלד את סיסמתך","Login","Logout");
  349.     } else {
  350.         ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Welcome!","{ffffff}שלום משתמש יקר, המס אינו זיהה את המשתמש שלך\nאנא הקלד סיסמא שתשמש אותך להרבה דברים","Register","Logout");
  351.     }
  352. }
Advertisement
Add Comment
Please, Sign In to add comment