Advertisement
Guest User

Untitled

a guest
May 24th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.42 KB | None | 0 0
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //===========================================================================================================================//
  3. //===========================================================================================================================//
  4. //=====================================================[ DexyGame RP/DM Gamemode ]===========================================//
  5. //=========================================================[ Version: 0.0.1 ]================================================//
  6. //===========================================================================================================================//
  7. //===========================================================================================================================//
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. //============================================================================//
  10. // Gamemode Informations //
  11. //============================================================================//
  12.  
  13. //
  14.  
  15. //============================================================================//
  16. // Notes //
  17. //============================================================================//
  18.  
  19. /*
  20.  
  21. Video 1:
  22. --------
  23.  
  24. Dobrodosli u jos jedan DexyGame tutorial, u kojemu zapocinjemo novi gamemod, a
  25. u ovome videu slozit cemo potrebne include, boje te informacije o serveru kao
  26. sto su ime, gravitacija, website, itd.
  27.  
  28. Sve download fileove od includa mozete pronaci u opisu videa. ( i ovaj .pwn file)
  29.  
  30. A sad krenimo na dodavanje includa, a koristiti cemo zcmd, sscanf2 te YSI!
  31. Sada idemo definirati ime i ostale informacije servera, sada idemo definirati
  32. osnovne boje koje cemo koristiti. Jedne koristimo za server poruke a jedne za
  33. dialoge
  34.  
  35. Video 2:
  36. --------
  37.  
  38. Dobrodosli u jos jedan DexyGame tutorial, u ovom cemo se pozabaciti sa account
  39. systemom. Prvobitni plan mi je bio koristiti YSI ali ipak sam se odlucio za
  40. MySQL, tako da cemo u ovom videu zamjeniti include. A nakon toga povezati server
  41. sa databazom te napraviti enum da mozemo sacuvat variable, a enum koristim jer
  42. je brzi od PVarova iako trosi vise memorije.
  43.  
  44. Download linkove mozete pronaci u opisu videa.
  45.  
  46. Znaci krecemo sa spajanjem databaze sa serverom, spojili smo databazu sa serverom
  47. a sada cemo napraviti par potrebnih enuma. Sada cemo krenuti sa stockovima za
  48. load/save, rijesili smo stockove, sada mozemo prikazati igracima dialog i pustit
  49. im da se logiraju/registriraju sada cemo napraviti ondialogresponse za dialoge.
  50.  
  51. Video 3:
  52. --------
  53.  
  54.  
  55.  
  56. */
  57. //============================================================================//
  58. // Includes //
  59. //============================================================================//
  60.  
  61. #include <a_samp>
  62. #include <a_mysql>
  63. #include <zcmd>
  64. #include <sscanf2>
  65.  
  66. //============================================================================//
  67. // Forwards //
  68. //============================================================================//
  69.  
  70. //
  71.  
  72. //============================================================================//
  73. // Defines //
  74. //============================================================================//
  75.  
  76. #define SERVER_NAME "[0.3.7] Balkan Exit RolePlay |Script test|"
  77. #define SERVER_TIME "12:00"
  78. #define SERVER_GRAVITY "0.00800"
  79. #define SERVER_MAP "[BE:RP] v1.0"
  80. #define SERVER_WEATHER "2"
  81. #define SERVER_WEBSITE "www.balkanexit.net"
  82.  
  83. //============================================================================//
  84.  
  85. #define DATABASE_HOST "localhost"
  86. #define DATABASE_USER "root"
  87. #define DATABASE_PASS ""
  88. #define DATABASE_DB "DGDatabase"
  89.  
  90. //============================================================================//
  91.  
  92. #define Red "{FF0000}"
  93. #define Orange "{FF6600}"
  94. #define Blue "{0066FF}"
  95. #define Green "{009900}"
  96. #define Yellow "{FFFF00}"
  97. #define White "{FFFFFF}"
  98. #define Purple "{FF0066}"
  99.  
  100. #define Red1 0xFF0000FF
  101. #define Orange1 0xFF6600FF
  102. #define Blue1 0x0066FFFF
  103. #define Green1 0x009900FF
  104. #define Yellow1 0xFFFF00FF
  105. #define White1 0xFFFFFFFF
  106. #define Purple1 0xFF0066FF
  107.  
  108. //============================================================================//
  109.  
  110. #define DIALOG_LOGIN 1
  111. #define DIALOG_REGISTER 2
  112.  
  113. //============================================================================//
  114. // News //
  115. //============================================================================//
  116.  
  117. enum pInfo {
  118. pScore,
  119. pMoney,
  120. pAdmin
  121. }
  122. new PlayerInfo[MAX_PLAYERS][pInfo];
  123. new Logged[MAX_PLAYERS];
  124.  
  125. //============================================================================//
  126. // Main //
  127. //============================================================================//
  128.  
  129. main()
  130. {
  131. print("\nGamemode Informations");
  132. print("-----------------------");
  133. print("Balkan Exit - By: Jovic");
  134. print(" www.balkanexit.net\n\n");
  135. print("Loading Gamemode");
  136. print("----------------");
  137. }
  138.  
  139. //============================================================================//
  140. // Publics //
  141. //============================================================================//
  142.  
  143. public OnGameModeInit()
  144. {
  145. //========================================================================//
  146. // Server Informations //
  147. //========================================================================//
  148.  
  149. new stuff[64];
  150. format(stuff, sizeof(stuff), "hostname %s", SERVER_NAME);
  151. SendRconCommand(stuff);
  152. format(stuff, sizeof(stuff), "mapname %s", SERVER_MAP);
  153. SendRconCommand(stuff);
  154. format(stuff, sizeof(stuff), "weather %s", SERVER_WEATHER);
  155. SendRconCommand(stuff);
  156. format(stuff, sizeof(stuff), "weburl %s", SERVER_WEBSITE);
  157. SendRconCommand(stuff);
  158. format(stuff, sizeof(stuff), "worldtime %s", SERVER_TIME);
  159. SendRconCommand(stuff);
  160. SetGameModeText("[BE:RP] V1.0");
  161.  
  162. //========================================================================//
  163. // MySQL Part //
  164. //========================================================================//
  165.  
  166. new mysql = mysql_connect( DATABASE_HOST, DATABASE_USER, DATABASE_DB, DATABASE_PASS );
  167. mysql_debug(1);
  168. if(mysql_ping(mysql)) print ("Povezivanje sa databazom USPIJESNO!");
  169. if(!mysql_ping(mysql)) print ("Povezivanje sa databazom NEUSPIJESNO!");
  170. return 1;
  171. }
  172.  
  173. public OnGameModeExit()
  174. {
  175. return 1;
  176. }
  177.  
  178. public OnPlayerRequestClass(playerid, classid)
  179. {
  180. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  181. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  182. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  183. return 1;
  184. }
  185.  
  186. public OnPlayerConnect(playerid)
  187. {
  188. Logged[playerid] = 0;
  189. new Query[125], FinalName[24];
  190. mysql_real_escape_string(PlayerName(playerid), FinalName);
  191. format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s'", FinalName);
  192. mysql_query(Query);
  193. mysql_store_result();
  194. if(mysql_num_rows() != 0)
  195. {
  196. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Unesite lozinku da se logirate", "U redu", "Cancel");
  197. }
  198. else
  199. {
  200. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registracija", "Unesite lozinku za reigstraciju", "U redu", "Cancel");
  201. }
  202. return 1;
  203. }
  204.  
  205. public OnPlayerDisconnect(playerid, reason)
  206. {
  207. SaveAccount(playerid);
  208. return 1;
  209. }
  210.  
  211. public OnPlayerSpawn(playerid)
  212. {
  213. return 1;
  214. }
  215.  
  216. public OnPlayerDeath(playerid, killerid, reason)
  217. {
  218. return 1;
  219. }
  220.  
  221. public OnVehicleSpawn(vehicleid)
  222. {
  223. return 1;
  224. }
  225.  
  226. public OnVehicleDeath(vehicleid, killerid)
  227. {
  228. return 1;
  229. }
  230.  
  231. public OnPlayerText(playerid, text[])
  232. {
  233. return 1;
  234. }
  235.  
  236. public OnPlayerCommandText(playerid, cmdtext[])
  237. {
  238. return 0;
  239. }
  240.  
  241. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  242. {
  243. return 1;
  244. }
  245.  
  246. public OnPlayerExitVehicle(playerid, vehicleid)
  247. {
  248. return 1;
  249. }
  250.  
  251. public OnPlayerStateChange(playerid, newstate, oldstate)
  252. {
  253. return 1;
  254. }
  255.  
  256. public OnPlayerEnterCheckpoint(playerid)
  257. {
  258. return 1;
  259. }
  260.  
  261. public OnPlayerLeaveCheckpoint(playerid)
  262. {
  263. return 1;
  264. }
  265.  
  266. public OnPlayerEnterRaceCheckpoint(playerid)
  267. {
  268. return 1;
  269. }
  270.  
  271. public OnPlayerLeaveRaceCheckpoint(playerid)
  272. {
  273. return 1;
  274. }
  275.  
  276. public OnRconCommand(cmd[])
  277. {
  278. return 1;
  279. }
  280.  
  281. public OnPlayerRequestSpawn(playerid)
  282. {
  283. return 1;
  284. }
  285.  
  286. public OnObjectMoved(objectid)
  287. {
  288. return 1;
  289. }
  290.  
  291. public OnPlayerObjectMoved(playerid, objectid)
  292. {
  293. return 1;
  294. }
  295.  
  296. public OnPlayerPickUpPickup(playerid, pickupid)
  297. {
  298. return 1;
  299. }
  300.  
  301. public OnVehicleMod(playerid, vehicleid, componentid)
  302. {
  303. return 1;
  304. }
  305.  
  306. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  307. {
  308. return 1;
  309. }
  310.  
  311. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  312. {
  313. return 1;
  314. }
  315.  
  316. public OnPlayerSelectedMenuRow(playerid, row)
  317. {
  318. return 1;
  319. }
  320.  
  321. public OnPlayerExitedMenu(playerid)
  322. {
  323. return 1;
  324. }
  325.  
  326. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  327. {
  328. return 1;
  329. }
  330.  
  331. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  332. {
  333. return 1;
  334. }
  335.  
  336. public OnRconLoginAttempt(ip[], password[], success)
  337. {
  338. return 1;
  339. }
  340.  
  341. public OnPlayerUpdate(playerid)
  342. {
  343. return 1;
  344. }
  345.  
  346. public OnPlayerStreamIn(playerid, forplayerid)
  347. {
  348. return 1;
  349. }
  350.  
  351. public OnPlayerStreamOut(playerid, forplayerid)
  352. {
  353. return 1;
  354. }
  355.  
  356. public OnVehicleStreamIn(vehicleid, forplayerid)
  357. {
  358. return 1;
  359. }
  360.  
  361. public OnVehicleStreamOut(vehicleid, forplayerid)
  362. {
  363. return 1;
  364. }
  365.  
  366. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  367. {
  368. if(dialogid == DIALOG_LOGIN)
  369. {
  370. if(response)
  371. {
  372. new Query[125], FinalName[24];
  373. mysql_real_escape_string(PlayerName(playerid), FinalName);
  374. format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s' AND `Password` = '%s'", FinalName, inputtext);
  375. mysql_query(Query);
  376. mysql_store_result();
  377. if(!mysql_num_rows())
  378. {
  379. SendClientMessage(playerid, Orange1, "Lozinka netocna, pokusajte ponovo!");
  380. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Unesite lozinku da se ulogirate", "U redu", "Cancel");
  381. }
  382. else
  383. {
  384. LoadAccount(playerid);
  385. Logged[playerid] = 1;
  386. SpawnPlayer(playerid);
  387. }
  388. }
  389. else
  390. {
  391. Kick(playerid);
  392. }
  393. }
  394. if(dialogid == DIALOG_REGISTER)
  395. {
  396. if(response)
  397. {
  398. new Query[200], FinalName[24];
  399. mysql_real_escape_string(PlayerName(playerid), FinalName);
  400. if(!strlen(inputtext))
  401. {
  402. SendClientMessage(playerid, Orange1, "Morate unijeti lozinku za registraciju!");
  403. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registracija", "Unesite lozinku za reigstraciju", "U redu", "Cancel");
  404. }
  405. else if(strlen(inputtext) <=3 || strlen(inputtext) > 30)
  406. {
  407. SendClientMessage(playerid, Orange1, "Lozinka mora imati najmanje 4 znamenke a najvise 30!");
  408. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registracija", "Unesite lozinku za reigstraciju", "U redu", "Cancel");
  409. }
  410. format(Query, sizeof(Query), "INSERT INTO `Users` (`Username`, `Password`, `Score`, `Money`, `Admin`) VALUES ('%s', '%s', '1', '5000', '0')", FinalName, inputtext);
  411. mysql_query(Query);
  412.  
  413. PlayerInfo[playerid][pAdmin] = 0;
  414. GivePlayerMoney(playerid, 5000);
  415. SetPlayerScore(playerid, 1);
  416. SpawnPlayer(playerid);
  417. }
  418. else
  419. {
  420. Kick(playerid);
  421. }
  422. }
  423. return 1;
  424. }
  425.  
  426. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  427. {
  428. return 1;
  429. }
  430.  
  431. //============================================================================//
  432. // Commands //
  433. //============================================================================//
  434.  
  435. //
  436.  
  437. //============================================================================//
  438. // Stocks //
  439. //============================================================================//
  440.  
  441. stock PlayerName(playerid)
  442. {
  443. new name[24];
  444. GetPlayerName(playerid, name, 24);
  445. return name;
  446. }
  447.  
  448. stock SaveAccount(playerid)
  449. {
  450. if(Logged[playerid] == 1)
  451. {
  452. PlayerInfo[playerid][pScore] = GetPlayerScore(playerid);
  453. PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
  454.  
  455. new Query[1024], FinalName[24];
  456. mysql_real_escape_string(PlayerName(playerid), FinalName);
  457. format(Query, sizeof(Query), "UPDATE `Users` SET `Score` = '%d', `Money` = '%d', `Admin` = '%d' WHERE `Username` = '%s'", PlayerInfo[playerid][pScore], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pAdmin], FinalName);
  458. mysql_query(Query);
  459. }
  460. }
  461.  
  462. stock LoadAccount(playerid)
  463. {
  464. new Query[125], FinalName[24];
  465. mysql_real_escape_string(PlayerName(playerid), FinalName);
  466. format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s'", FinalName);
  467. mysql_query(Query);
  468. mysql_store_result();
  469. if(mysql_retrieve_row())
  470. {
  471. new GetString[50];
  472. mysql_fetch_field_row(GetString,"Score"); PlayerInfo[playerid][pScore] = strval(GetString);
  473. mysql_fetch_field_row(GetString,"Money"); PlayerInfo[playerid][pMoney] = strval(GetString);
  474. mysql_fetch_field_row(GetString,"Admin"); PlayerInfo[playerid][pAdmin] = strval(GetString);
  475.  
  476. GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
  477. SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
  478. }
  479. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement