Guest User

easyGM by karolisK

a guest
Sep 16th, 2013
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.11 KB | None | 0 0
  1. /*
  2.  
  3.             ============================================================
  4.             |                   easyGM by KarolisK                     |
  5.             |              Gamemode parašytas 2013.09.04              |
  6.             ************************************************************
  7.             |       2013 (c) Visos teises saugomos projektas.lt        |
  8.             ============================================================
  9.  
  10. */
  11.  
  12.  
  13. /* ================|    INCLUDES    |================= */
  14.  
  15. #include <a_samp>
  16. #include YSI\y_commands
  17. #include YSI\y_malloc
  18. #include YSI\y_inline
  19. #include YSI\y_dialog
  20. #include YSI\y_ini
  21. /* ================|    DEFINES     |================= */
  22.  
  23. #define VERSIJA                     "0.1"               // Serverio versija
  24. #define ZEMELAPIS                   "sanFierro"         // Žemėlapio pavadinimas
  25. #define SLAPTAZODZIO_ILGUMAS        (50)                // Maksimalus slaptažodžio ilgis
  26. #define PRADINIAI_XP                (1000)              // Pradiniai patirties taškai duodami žaidėjui
  27. #define PRADINIAI_PINIGAI           (10000)             // Pradiniai pinigai duodami žaidėjui
  28. #define PRADINIS_SKIN               (52)                // Pradinis skin kuris bus duodamas žaidėjui
  29. #define Direktorija                 "Zaidejai/%s.ini"   // Žaidėjų direktorija
  30.  
  31. /* ================|    KINTAMIEJI  |================= */
  32.  
  33. /* Žaidėjų duomenų enum */
  34. enum playerEnum{
  35.     slaptazodis[ SLAPTAZODZIO_ILGUMAS ],        // Slaptažodis
  36.     patirtis,                                   // Patirtis ( XP )
  37.     pinigai,                                    // Pinigai
  38.     skin,                                       // Skinas
  39.     Float: pos_x,                               // Pozicija X
  40.     Float: pos_y,                               // Pozicija Z
  41.     Float: pos_z,                               // Pozicija Y
  42.     Float: gyvybes,                             // Gyvybės
  43.     Float: sarvai,                              // Šarvai
  44.     bool: prisijunges,                          // Ar prisijunges
  45.     bool: spawned,                              // Ar išsispawnino
  46.     bool: naujokas,                             // Ar naujokas
  47.     bool: mire                                  // Ar mirė
  48. };
  49.  
  50.  
  51.  
  52. /* Žaidėjų kintamieji */
  53. new
  54.     pDB[ MAX_PLAYERS ][ playerEnum ],       // Duomenys
  55.     vardas[ MAX_PLAYER_NAME ]               // Vardas
  56. ;
  57.  
  58.  
  59. /* Globalūs kintamieji */
  60.  
  61. new
  62.     gString[ 800 ],
  63.     Float: pozicija[3]
  64. ;
  65.  
  66.  
  67. /* ================|    FORWARDAI   |================= */
  68.  
  69. forward pakrauti_data(playerid, name[], value[]);
  70. forward saugojamZaideja(playerid);
  71.  
  72.  
  73. /* ================|    MAIN BLOCK  |================= */
  74.  
  75. main()
  76. {
  77.     printf( "Serverio versija %s ijungiama!", VERSIJA );
  78. }
  79.  
  80.  
  81. public OnGameModeInit()
  82. {
  83.     SetGameModeText( VERSIJA );
  84.     format( gString, 50, "mapname %s",ZEMELAPIS );
  85.     SendRconCommand(gString);
  86.     return 1;
  87. }
  88.  
  89. public OnGameModeExit()
  90. {
  91.     for( new p; p < MAX_PLAYERS; p++ )
  92.     {
  93.         saugojamZaideja( p );
  94.     }
  95.     return 1;
  96. }
  97.  
  98. public OnPlayerRequestClass(playerid, classid)
  99. {
  100.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  101.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  102.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  103.     return 1;
  104. }
  105.  
  106. public OnPlayerConnect(playerid)
  107. {
  108.     if(fexist(failas(playerid))) // Patikriname ar žaidėjas registruotas, jeigu taip:
  109.     {
  110.        
  111.         Prisijungimas( playerid ); // Parodom prisijungimą
  112.     }
  113.     else // Jeigu neregistruotas
  114.     {
  115.         Registracija( playerid ); // Parodom registraciją
  116.         return 1;
  117.     }
  118.     return 1;
  119. }
  120.  
  121. public OnPlayerDisconnect(playerid, reason)
  122. {
  123.     saugojamZaideja( playerid );
  124.     return 1;
  125. }
  126.  
  127. public OnPlayerSpawn(playerid)
  128. {
  129.     /* Jeigu žaidėjas kątik prisijungė */
  130.  
  131.     if( pDB[playerid][prisijunges] && !pDB[playerid][spawned] )
  132.     {
  133.         INI_ParseFile(failas(playerid),"pakrauti_%s",.bExtra = true, .extra = playerid);
  134.         pDB[playerid][spawned]=true;
  135.     }
  136.  
  137.     /* Jeigu žaidėjas naujokas */
  138.  
  139.     if( pDB[playerid][naujokas] && !pDB[playerid][spawned] )
  140.     {
  141.         SendClientMessage(playerid, -1, "Tu naujokas!");
  142.         GivePlayerMoney( playerid, PRADINIAI_PINIGAI );
  143.         SetPlayerScore( playerid, PRADINIAI_XP );
  144.     }
  145.  
  146.     /* Jeigu žaidėjas mirė */
  147.     if( pDB[playerid][mire] )
  148.     {
  149.         SendClientMessage(playerid, -1, "Tu mirei!");
  150.     }
  151.     return 1;
  152. }
  153.  
  154. public OnPlayerDeath(playerid, killerid, reason)
  155. {
  156.     pDB[playerid][mire] = true;
  157.     return 1;
  158. }
  159.  
  160. public OnVehicleSpawn(vehicleid)
  161. {
  162.     return 1;
  163. }
  164.  
  165. public OnVehicleDeath(vehicleid, killerid)
  166. {
  167.     return 1;
  168. }
  169.  
  170. public OnPlayerText(playerid, text[])
  171. {
  172.     return 1;
  173. }
  174.  
  175. public OnPlayerCommandText(playerid, cmdtext[])
  176. {
  177.     return 0;
  178. }
  179.  
  180. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  181. {
  182.     return 1;
  183. }
  184.  
  185. public OnPlayerExitVehicle(playerid, vehicleid)
  186. {
  187.     return 1;
  188. }
  189.  
  190. public OnPlayerStateChange(playerid, newstate, oldstate)
  191. {
  192.     return 1;
  193. }
  194.  
  195. public OnPlayerEnterCheckpoint(playerid)
  196. {
  197.     return 1;
  198. }
  199.  
  200. public OnPlayerLeaveCheckpoint(playerid)
  201. {
  202.     return 1;
  203. }
  204.  
  205. public OnPlayerEnterRaceCheckpoint(playerid)
  206. {
  207.     return 1;
  208. }
  209.  
  210. public OnPlayerLeaveRaceCheckpoint(playerid)
  211. {
  212.     return 1;
  213. }
  214.  
  215. public OnRconCommand(cmd[])
  216. {
  217.     return 1;
  218. }
  219.  
  220. public OnPlayerRequestSpawn(playerid)
  221. {
  222.     return 1;
  223. }
  224.  
  225. public OnObjectMoved(objectid)
  226. {
  227.     return 1;
  228. }
  229.  
  230. public OnPlayerObjectMoved(playerid, objectid)
  231. {
  232.     return 1;
  233. }
  234.  
  235. public OnPlayerPickUpPickup(playerid, pickupid)
  236. {
  237.     return 1;
  238. }
  239.  
  240. public OnVehicleMod(playerid, vehicleid, componentid)
  241. {
  242.     return 1;
  243. }
  244.  
  245. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  246. {
  247.     return 1;
  248. }
  249.  
  250. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  251. {
  252.     return 1;
  253. }
  254.  
  255. public OnPlayerSelectedMenuRow(playerid, row)
  256. {
  257.     return 1;
  258. }
  259.  
  260. public OnPlayerExitedMenu(playerid)
  261. {
  262.     return 1;
  263. }
  264.  
  265. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  266. {
  267.     return 1;
  268. }
  269.  
  270. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  271. {
  272.     return 1;
  273. }
  274.  
  275. public OnRconLoginAttempt(ip[], password[], success)
  276. {
  277.     return 1;
  278. }
  279.  
  280. public OnPlayerUpdate(playerid)
  281. {
  282.     return 1;
  283. }
  284.  
  285. public OnPlayerStreamIn(playerid, forplayerid)
  286. {
  287.     return 1;
  288. }
  289.  
  290. public OnPlayerStreamOut(playerid, forplayerid)
  291. {
  292.     return 1;
  293. }
  294.  
  295. public OnVehicleStreamIn(vehicleid, forplayerid)
  296. {
  297.     return 1;
  298. }
  299.  
  300. public OnVehicleStreamOut(vehicleid, forplayerid)
  301. {
  302.     return 1;
  303. }
  304.  
  305. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  306. {
  307.     return 1;
  308. }
  309.  
  310. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  311. {
  312.     return 1;
  313. }
  314.  
  315. /* ================|    KOMANDOS    |================= */
  316.  
  317.  
  318. /* ================|    PUBLIC      |================= */
  319.  
  320. public pakrauti_data(playerid, name[], value[])
  321. {
  322.    
  323.    
  324.     INI_String("Slaptazodis", pDB[playerid][slaptazodis],SLAPTAZODZIO_ILGUMAS);
  325.     INI_Float("Gyvybes",pDB[playerid][gyvybes]);
  326.     INI_Float("Sarvai",pDB[playerid][sarvai]);
  327.     INI_Int("Pinigai",pDB[playerid][pinigai]);
  328.     INI_Int("Patirtis",pDB[playerid][patirtis]);
  329.     INI_Int("Skin",pDB[playerid][skin]);
  330.     INI_Float("pos_x",pozicija[0]);
  331.     INI_Float("pos_y",pozicija[1]);
  332.     INI_Float("pos_z",pozicija[2]);
  333.     SetPlayerPos( playerid, pozicija[0],pozicija[1],pozicija[2] );
  334.     SetPlayerHealth( playerid, pDB[playerid][gyvybes] );
  335.     SetPlayerArmour( playerid, pDB[playerid][sarvai] );
  336.     GivePlayerMoney( playerid, pDB[playerid][pinigai] );
  337.     SetPlayerScore( playerid, pDB[playerid][patirtis] );
  338.     SetPlayerSkin( playerid, pDB[playerid][skin] );
  339.     printf("%s pakrautas", Vardas(playerid) );
  340.     return 1;
  341. }
  342.  
  343. public saugojamZaideja( playerid )
  344. {
  345.     new tick, lastTick, finalTick;
  346.     tick = GetTickCount();
  347.     new INI:file = INI_Open(failas(playerid)); // Atidarom failą
  348.     INI_SetTag(file,"Zaidejo duomenys"); // Nustatom tag'a 'zaidejo duomenys'
  349.     /* Išgaunam tai ko reiks */
  350.  
  351.     GetPlayerHealth( playerid, pDB[playerid][gyvybes] );
  352.     GetPlayerArmour( playerid, pDB[playerid][sarvai] );
  353.     GetPlayerPos( playerid, pDB[playerid][pos_x], pDB[playerid][pos_y], pDB[playerid][pos_z] );
  354.     /* Surašom viską į failus */
  355.  
  356.     INI_WriteFloat(file,"Gyvybes",pDB[playerid][gyvybes]);
  357.     INI_WriteFloat(file,"Sarvai",pDB[playerid][sarvai]);
  358.     INI_WriteInt(file,"Pinigai",GetPlayerMoney(playerid));
  359.     INI_WriteInt(file,"Patirtis",GetPlayerScore(playerid));
  360.     INI_WriteInt(file,"Skin",GetPlayerSkin(playerid));
  361.     INI_WriteFloat(file,"pos_x",pDB[playerid][pos_x]);
  362.     INI_WriteFloat(file,"pos_y",pDB[playerid][pos_y]);
  363.     INI_WriteFloat(file,"pos_z",pDB[playerid][pos_z]);
  364.  
  365.     /* Uždarom failą */
  366.  
  367.     INI_Close(file);
  368.     lastTick = GetTickCount();
  369.     finalTick = lastTick - tick;
  370.     printf("%s issaugotas per %i ms!", Vardas(playerid), finalTick );
  371.     return 1;
  372. }
  373.  
  374. /* ================|    FUNKCIJOS   |================= */
  375.  
  376. stock Vardas( playerid )
  377. {
  378.     GetPlayerName( playerid, vardas, MAX_PLAYER_NAME );
  379.     return( vardas );
  380. }
  381.  
  382. stock Prisijungimas( playerid ) // Prisijungimo funkcija rodoma žaidėjui
  383. {
  384.     inline loginDialog( playerid1, dialogid, response, listitem, string: inputtext[] )
  385.     {
  386.         #pragma unused playerid1, dialogid, listitem
  387.         if(!response) return Kick(playerid); // Jeigu išeina - išmetam
  388.         if(response) // Jeigu paspaudė jungtis
  389.         {
  390.            
  391.             if(!strcmp(inputtext, pDB[playerid][slaptazodis], false)) // Jeigu įvedė teisingą slaptažodį
  392.             {
  393.                 pDB[playerid][prisijunges] = true;
  394.                 SendClientMessage(playerid,-1,"Sveikiname prisijungus!");
  395.             }
  396.             else // Jeigu slaptažodis netinka
  397.             {
  398.                 SendClientMessage( playerid, -1, "Neteisingas slaptažodis!" );
  399.                 Prisijungimas( playerid );
  400.                 return 1;
  401.             }
  402.         }
  403.     }
  404.     Dialog_ShowCallback(playerid,using inline loginDialog,DIALOG_STYLE_INPUT,"Prisijungimas","Sveikas atvykęs!\nPrisijunk","Jungtis","Išeiti"); // Parodom prisijungimo dialogą
  405.     return 1;
  406. }
  407.  
  408. stock Registracija( playerid ) // Registracijos funkcija rodoma žaidėjui
  409. {
  410.     inline regDialog( playerid1, dialogid, response, listitem, string: inputtext[] )
  411.     {
  412.         #pragma unused playerid1, dialogid, listitem
  413.         if(!response) return Kick(playerid); // Jeigu išeina - išmetam
  414.         if(response) // Jeigu paspaudė jungtis
  415.         {
  416.             if(!strlen(inputtext)) // Jeigu neįvedė slaptažodžio
  417.             {
  418.                 Registracija( playerid );
  419.                 SendClientMessage( playerid, -1, "Neteisingas ivestas slaptažodis!" );
  420.                 return 1;
  421.             }
  422.      
  423.             new INI:file = INI_Open(failas(playerid)); // atidarom failą įrašymui
  424.             INI_SetTag(file,"Zaidejo duomenys"); // Nustatom tag'a 'zaidejo duomenys'
  425.             INI_WriteString(file,"Slaptazodis",inputtext);
  426.             INI_WriteFloat(file,"Gyvybes",100);
  427.             INI_WriteFloat(file,"Sarvai",0);
  428.             INI_WriteInt(file,"Pinigai",0);
  429.             INI_WriteInt(file,"Patirtis",0);
  430.             INI_WriteInt(file,"Skin",0);
  431.             INI_WriteFloat(file,"pos_x",0);
  432.             INI_WriteFloat(file,"pos_y",0);
  433.             INI_WriteFloat(file,"pos_z",0);
  434.             INI_Close(file); // Uždarom failą
  435.             SendClientMessage(playerid,-1,"Užsiregistravote sėkmingai!"); // Žaidėjas užsiregistravo - nusiunčiam žinutę
  436.             pDB[playerid][naujokas]=true;
  437.            
  438.             return 1;
  439.         }
  440.     }
  441.     Dialog_ShowCallback(playerid,using inline regDialog,DIALOG_STYLE_INPUT,"Registracija","Sveikas atvykęs!\nUzsiregistruok","Jungtis","Išeiti"); // Parodom registracijos dialogą
  442.     return 1;
  443. }
  444.  
  445. stock failas( playerid ) // Funkcija, kurios pagalba rasime kelią iki žaidėjo failo direktorijos
  446. {
  447.     new str[ 128 ], name[ MAX_PLAYER_NAME ];
  448.     GetPlayerName( playerid, name, sizeof name );
  449.     format(str, sizeof str, Direktorija, name);
  450.     return str;
  451. }
Advertisement
Add Comment
Please, Sign In to add comment