Advertisement
Guest User

Zombie Panic! Source for SA-MP

a guest
Feb 26th, 2011
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 49.51 KB | None | 0 0
  1. /****************************************************************
  2. *       Zombie Panic! Source                            *
  3. *       Made by [ZPS]Artjom                             *
  4. *       Copyright © [ZPS]Artjom                        *
  5. *                                                       *
  6. *       Do not Remove this Credits                  *
  7. * Do not re-upload this and dont claim it as your own       *
  8. *You might edit this for your own but you have to give Credits  *
  9. *****************************************************************
  10. */
  11. #include <a_samp>
  12. #include <core>
  13. #include <float>
  14. #include <a_mysql>
  15. #include <zcmd>
  16.  
  17.  
  18.  
  19. forward SaveIn(filename[],text[]);
  20. forward infection(playerid);
  21. forward reghealth(playerid);
  22. forward Float:GetDistanceBetweenPlayers(p1, p2);
  23. forward EndRound(playerid);
  24. forward StartRound(playerid);
  25. forward AwaitPlayers(playerid);
  26.  
  27. // Do not Change these Numbers if you dont know what you are doing
  28. //Defines the teams
  29. #define TEAM_ZOMBIE 0
  30. #define TEAM_SURVIVOR 1
  31. #define TEAM_SPEC 2
  32.  
  33. // defines the Dialogs  -  Do not change the number if you dont know what it do
  34. #define DIALOG_REGISTER 7000
  35. #define DIALOG_LOGIN 7001
  36. #define DIALOG_KREASON 7002
  37. #define DIALOG_BREASON 7003
  38. #define LEVEL1 7004
  39. #define LEVEL2 7005
  40. #define DIALOG_MREASON 7006
  41. #define DIALOG_UMREASON 7007
  42. #define DIALOG_APM 7008
  43. #define DIALOG_FREEZE 7009
  44. #define DIALOG_UNFREEZE 7010
  45. #define DIALOG_SPAWN 7011
  46. #define DIALOG_AKILL 7012
  47.  
  48. #define COLOR_DARKGREEN 0x008A05AA
  49.  
  50. // Change this to your Settings. Note you need to setup this database before you start the server
  51. #define SQL_HOST "localhost" // default host: localhost
  52. #define SQL_USER "root" // Username for connecting
  53. #define SQL_DB "zombie_panic_source" // Database. Be sure to change this in any query its needed
  54. #define SQL_PW "" // User Password
  55. #define mysql_fetch_row(%1) mysql_fetch_row_format(%1,"|")
  56.  
  57. #pragma tabsize 0 // Tells the loose indention to shut up :)
  58.  
  59. // Player Variables and Strings
  60. new PlayerAdminLevel[MAX_PLAYERS];
  61. new gTeam[MAX_PLAYERS];
  62. new InAdminMode[MAX_PLAYERS];
  63. new Auth[MAX_PLAYERS];
  64. new Hide[MAX_PLAYERS];
  65. new adminduty[MAX_PLAYERS];
  66. new Muted[MAX_PLAYERS];
  67. new pmoff[MAX_PLAYERS];
  68. new roundstarted =0;
  69. new await;
  70. new ZombieLives=12;
  71. // ZombieLives can be changed to a different number. But dont make it to high or it will be unfair for the survivors :-)
  72.  
  73. // more variable and strings
  74. new infect;
  75. new regheal;
  76. new Infected[MAX_PLAYERS];
  77. new Carrier[MAX_PLAYERS];
  78.  
  79. //TextDraw for the Zombe Lives
  80. new Text:zombielive;
  81. // Required for the admin panel
  82. new giveplayerid;
  83.  
  84. // Required for the MySQL functions
  85. new Query[256];
  86.  
  87. // Random Spawn of Zombies
  88. new Float:ZombieSpawn[6][4] = {
  89.     {1242.4312,-820.4415,1083.1563,156.8149},
  90.     {1237.5525,-821.5093,1083.1563,208.5879},
  91.     {1232.9702,-821.9721,1083.1563,206.0087},
  92.     {1235.0757,-825.6114,1083.1563,206.0087},
  93.     {1241.7732,-826.3545,1083.1563,177.8085},
  94.     {1233.6747,-829.8359,1084.0149,238.5958}
  95. };
  96. // Random Spawn of Survivors
  97. new Float:SurvivorSpawn[6][4] = {
  98.    
  99.     {1296.8135,-793.0980,1084.0078,336.3332},
  100.     {1302.3759,-793.5371,1084.0078,350.1200},
  101.     {1297.5411,-791.2996,1084.0078,344.7933},
  102.     {1302.7249,-791.4534,1084.0078,344.7933},
  103.     {1300.1113,-790.6651,1084.0078,353.8800},
  104.     {1298.9369,-793.7982,1084.0078,345.1066}
  105. };
  106.  
  107. // Random Spawn of Spectators
  108. new Float:SpectatorSpawn[9][4] = {
  109.     {1258.1570,-825.5559,1084.0078,154.8145},
  110.     {1256.4148,-820.7083,1084.0078,159.8279},
  111.     {1251.1288,-820.7757,1084.0078,190.5349},
  112.     {1246.3337,-822.0853,1084.0078,212.7818},
  113.     {1247.1388,-826.7230,1084.0078,246.3087},
  114.     {1250.7412,-827.4081,1084.0078,240.9820},
  115.     {1254.2709,-827.1176,1084.0078,185.2081},
  116.     {1258.5479,-830.4626,1084.0149,33.4808},
  117.     {1246.0511,-830.5308,1084.0078,250.1413}
  118. };
  119.  
  120. new aDisconnectNames[][16] = {
  121.     {"Timeout"}, // 0
  122.     {"Left"}, // 1
  123.     {"Kicked/Banned"} // 2
  124. };
  125.  
  126. main()
  127. {
  128.     print("\n----------------------------------");
  129.     print(" Zombie Panic! Source by [ZPS]Artjom");
  130.     print("----------------------------------\n");
  131. }
  132.  
  133. // Check the Regeneration for Zombies to get their health back
  134. public reghealth(playerid)
  135. {
  136.     if(IsPlayerConnected(playerid) && gTeam[playerid] == TEAM_ZOMBIE)
  137.     {
  138.         new Float:health;
  139.         GetPlayerHealth(playerid,health);
  140.         if(health <=199)
  141.         {
  142.             SetPlayerHealth(playerid,health+5);
  143.         }
  144.         else if(health >= 201 && Carrier[playerid] ==0)
  145.         {
  146.             SetPlayerHealth(playerid,200.0); // preventing that a normal zombie dont gets more health then 200
  147.             KillTimer(regheal);
  148.         }
  149.         else if(health <= 249 && Carrier[playerid] ==1)
  150.         {
  151.             SetPlayerHealth(playerid,health+5);
  152.         }
  153.         else if(health >=251 && Carrier[playerid] == 1)
  154.         {
  155.             SetPlayerHealth(playerid,250.0);
  156.             KillTimer(regheal);
  157.         }
  158.         else if(health == 200)
  159.         {
  160.             KillTimer(regheal);
  161.         }
  162.     }
  163. return 1;
  164. }
  165.  
  166. public Float:GetDistanceBetweenPlayers(p1,p2){
  167. new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
  168. if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2)){
  169. return -1.00;
  170. }
  171. GetPlayerPos(p1,x1,y1,z1);
  172. GetPlayerPos(p2,x2,y2,z2);
  173. return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  174.  
  175. }
  176.  
  177.  
  178. //Check the Infection and Mutate the Player to a Zombie
  179. public infection(playerid)
  180. {
  181.     if(IsPlayerConnected(playerid) && gTeam[playerid] == TEAM_SURVIVOR)
  182.     {
  183.         if(Infected[playerid] == 1)
  184.         {
  185.             new Float:health;
  186.             GetPlayerHealth(playerid,health);
  187.             if(health <=50)
  188.             {
  189.                 gTeam[playerid] = TEAM_ZOMBIE;
  190.                 SetPlayerSkin(playerid,33);
  191.                 SetPlayerHealth(playerid,200);
  192.                 ResetPlayerWeapons(playerid);
  193.                 KillTimer(infect);
  194.                 TogglePlayerControllable(playerid,1);
  195.             }
  196.             else if(health >=51)
  197.             {
  198.                 SetPlayerHealth(playerid,health-5);
  199.             }
  200.        
  201.         }
  202.  
  203.     }
  204. return 1;
  205. }
  206.  
  207.  
  208. public OnGameModeInit()
  209. {
  210.     SetGameModeText("Zombie Panic! Source");
  211.     EnableStuntBonusForAll(0);
  212.     mysql_connect(SQL_HOST,SQL_USER,SQL_DB,SQL_PW);
  213.     UsePlayerPedAnims();
  214.     DisableInteriorEnterExits();
  215.     AddPlayerClass(20, 1958.3783, 1343.1572, 15.3746, 269.1425, 2, 1, 22, 27, 0, 0);
  216.     AddPlayerClass(7, 1958.3783, 1343.1572, 15.3746, 269.1425, 3, 1, 22, 27, 0, 0);
  217.     AddPlayerClass(11, 1958.3783, 1343.1572, 15.3746, 269.1425, 5, 1, 22, 27, 0, 0);
  218.     AddPlayerClass(12, 1958.3783, 1343.1572, 15.3746, 269.1425, 6, 1, 22, 27, 0, 0);
  219.     AddPlayerClass(22, 1958.3783, 1343.1572, 15.3746, 269.1425, 7, 1, 22, 27, 0, 0);
  220.     AddPlayerClass(24, 1958.3783, 1343.1572, 15.3746, 269.1425, 8, 1, 22, 27, 0, 0);
  221.     AddPlayerClass(46, 1958.3783, 1343.1572, 15.3746, 269.1425, 15, 1, 22, 27, 0, 0);
  222.     AddPlayerClass(33, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  223.     AddPlayerClass(34, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  224.     AddPlayerClass(78, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  225.     AddPlayerClass(62, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  226.     AddPlayerClass(79, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  227.     CreateObject(971,1252.9361572266,-830.99554443359,1085.6008300781,0.00000000,0.00000000,179.99993896484); // objects (subwaygate) (3)
  228.     roundstarted=0;
  229.     SetTimer("reghealth",1000,1);
  230.     return 1;
  231. }
  232.  
  233. public OnGameModeExit()
  234. {
  235.     mysql_close();
  236.     return 1;
  237. }
  238.  
  239. stock PlayerName(playerid) {
  240.   new name[255];
  241.   GetPlayerName(playerid, name, 255);
  242.   return name;
  243. }
  244. public EndRound(playerid)
  245. {
  246.     if(roundstarted == 1)
  247.     {
  248.         for(new i=0; i < MAX_PLAYERS; i++)
  249.         {
  250.             TogglePlayerControllable(i,0);
  251.             SendClientMessageToAll(0x87CEEBAA,"Round End");
  252.         }
  253.     }
  254. return 1;
  255. }
  256.  
  257. public StartRound(playerid)
  258. {
  259.     if(roundstarted == 1)
  260.     {
  261.         for (new i=0; i < MAX_PLAYERS; i++)
  262.         {
  263.             TogglePlayerControllable(i,1);
  264.             SendClientMessage(playerid,0xFFD859AA,"Round Started. All late joiners will spawn as zombie");
  265.             SetTimer("EndRound",600000,0);
  266.             KillTimer(await);
  267.         }
  268.        
  269.     }
  270. return 1;
  271. }
  272.  
  273. public AwaitPlayers(playerid)
  274. {
  275.     if(roundstarted == 1)
  276.     {
  277.         for(new i=0; i < MAX_PLAYERS; i++)
  278.         {
  279.             TogglePlayerControllable(i,1);
  280.             KillTimer(await);
  281.         }
  282.        
  283.     }
  284.     GameTextForPlayer(playerid,"~w~Awaiting more players",1000,0);
  285.     TogglePlayerControllable(playerid,0);
  286. return 1;
  287. }
  288.  
  289. public OnPlayerRequestClass(playerid, classid)
  290. {
  291.     if(GetPVarInt(playerid,"KilledByZombie") == 1)
  292.     {
  293.         SpawnPlayer(playerid);
  294.         gTeam[playerid] = TEAM_ZOMBIE;
  295.         SetPlayerColor(playerid,0x8F0D0DAA);
  296.         SetPlayerHealth(playerid,200.0);
  297.  
  298.     }
  299.     SetPlayerTeamFromClass(playerid, classid);
  300.    
  301.     SetPlayerInterior(playerid,3);
  302.     SetPlayerPos(playerid,1206.9768,-32.5926,1000.9531);
  303.     SetPlayerFacingAngle(playerid,249.3010);
  304.     SetPlayerCameraPos(playerid,1209.1083,-33.8061,1000.9531);
  305.     SetPlayerCameraLookAt(playerid,1206.9768,-32.5926,1000.9531);
  306.    
  307.     switch (classid){
  308.    
  309.         case 0:GameTextForPlayer(playerid,"~b~SURVIVOR",6000,4);
  310.         case 1:GameTextForPlayer(playerid,"~b~SURVIVOR",6000,4);
  311.         case 2:GameTextForPlayer(playerid,"~b~SURVIVOR",6000,4);
  312.         case 3:GameTextForPlayer(playerid,"~b~SURVIVOR",6000,4);
  313.         case 4:GameTextForPlayer(playerid,"~b~SURVIVOR",6000,4);
  314.         case 5:GameTextForPlayer(playerid,"~b~SURVIVOR",6000,4);
  315.         case 6:GameTextForPlayer(playerid,"~r~ZOMBIE",6000,4);
  316.         case 7:GameTextForPlayer(playerid,"~r~ZOMBIE",6000,4);
  317.         case 8:GameTextForPlayer(playerid,"~r~ZOMBIE",6000,4);
  318.         case 9:GameTextForPlayer(playerid,"~r~ZOMBIE",6000,4);
  319.         case 10:GameTextForPlayer(playerid,"~r~ZOMBIE",6000,4);
  320.    
  321.     }
  322.     return 1;
  323. }
  324.  
  325. SetPlayerTeamFromClass(playerid, classid) {
  326.  
  327.     switch(classid){
  328.         case 0: gTeam[playerid] = TEAM_SURVIVOR;
  329.         case 1: gTeam[playerid] = TEAM_SURVIVOR;
  330.         case 2: gTeam[playerid] = TEAM_SURVIVOR;
  331.         case 3: gTeam[playerid] = TEAM_SURVIVOR;
  332.         case 4: gTeam[playerid] = TEAM_SURVIVOR;
  333.         case 5: gTeam[playerid] = TEAM_SURVIVOR;
  334.         case 6: gTeam[playerid] = TEAM_ZOMBIE;
  335.         case 7: gTeam[playerid] = TEAM_ZOMBIE;
  336.         case 8: gTeam[playerid] = TEAM_ZOMBIE;
  337.         case 9: gTeam[playerid] = TEAM_ZOMBIE;
  338.         case 10: gTeam[playerid] = TEAM_ZOMBIE;
  339.     }
  340.  
  341. }
  342. CMD:rules(playerid,params[])
  343. {
  344.     #pragma unused params
  345.     SendClientMessage(playerid,0xFF7700AA,"Do not cheat / hax");
  346.     SendClientMessage(playerid,0xFF7700AA,"Do not Teamkill on purpose");
  347.     SendClientMessage(playerid,0xFF7700AA,"Suspected a cheated ? Use /report id reason to report him to the admins");
  348. return 1;
  349. }
  350.  
  351. CMD:commands(playerid,params[])
  352. {
  353.     #pragma unused params
  354.     if(gTeam[playerid] == TEAM_SURVIVOR)
  355.     {
  356.         SendClientMessage(playerid,0x00FFFFAA,"Survivor Commands:");
  357.         SendClientMessage(playerid,0x00FFFFAA,"/rules - Shows the Server Rules");
  358.         SendClientMessage(playerid,0x00FFFFAA,"/info - Shows your Statistics");
  359.         SendClientMessage(playerid,0x00FFFFAA,"/pm - Send a Private Message to an other players");
  360.         SendClientMessage(playerid,0x00FFFFAA,"/report - Reports a RuleBreaker to an admin");
  361.         SendClientMessage(playerid,0x00FFFFAA,"/admins Shows the Current Admins Online");
  362.         SendClientMessage(playerid,0x00FFFFAA,"/smsg -Team Chat for Survivors");
  363.     }
  364.     else if(gTeam[playerid] == TEAM_ZOMBIE)
  365.     {
  366.         SendClientMessage(playerid,0x8F0D0DAA,"Zombie Commands:");
  367.         SendClientMessage(playerid,0x8F0D0DAA,"/rules - Shows the Server Rules");
  368.         SendClientMessage(playerid,0x8F0D0DAA,"/info - Shows your Statistics");
  369.         SendClientMessage(playerid,0x8F0D0DAA,"/pm - Send a Private Message to an other players");
  370.         SendClientMessage(playerid,0x8F0D0DAA,"/report - Reports a RuleBreaker to an admin");
  371.         SendClientMessage(playerid,0x8F0D0DAA,"/admins Shows the Current Admins Online");
  372.         SendClientMessage(playerid,0x8F0D0DAA,"/infect If you are the Carrier you can infect other people");
  373.         SendClientMessage(playerid,0x8F0D0DAA,"/zmsg - Team Chat for Zombies");
  374.     }
  375.    
  376. return 1;
  377. }
  378.  
  379. CMD:zmsg(playerid, params[])
  380. {
  381.     new pname[24],string[128],msg[128];
  382.     GetPlayerName(playerid,pname,24);
  383.     if(sscanf(params,"s",msg)) return SendClientMessage(playerid,0xAA3333AA,"Usage: /zmsg [text]");
  384.     if(gTeam[playerid] != TEAM_ZOMBIE) return SendClientMessage(playerid,0xAA3333AA,"You are not a Zombie");
  385.     format(string,sizeof(string),"(TEAM) %s(%d): %s",pname,playerid,msg);
  386.     SendZombieMessage(string);
  387.     format(string,sizeof(string),"%s(%d) said in Teamchat Zombies: %s",pname,playerid,msg);
  388.     SendAdminMessage(string);
  389.     return 1;
  390. }
  391.  
  392. CMD:smsg(playerid, params[])
  393. {
  394.     new pname[24],string[128],msg[128];
  395.     GetPlayerName(playerid,pname,24);
  396.     if(sscanf(params,"s",msg)) return SendClientMessage(playerid,0xAA3333AA,"Usage: /smsg [text]");
  397.     if(gTeam[playerid] != TEAM_SURVIVOR) return SendClientMessage(playerid,0xAA3333AA,"You are not a Survivor");
  398.     format(string,sizeof(string),"(TEAM) %s(%d): %s",pname,playerid,msg);
  399.     SendSurvivorMessage(string);
  400.     format(string,sizeof(string),"%s(%d) said in Teamchat Survivors: %s",pname,playerid,msg);
  401.     SendAdminMessage(string);
  402.     return 1;
  403. }
  404.  
  405.  
  406. CMD:report(playerid, params[])
  407. {
  408.     new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME], str[128], reason, iD;
  409.     if (sscanf(params, "ds", iD, reason)) return SendClientMessage(playerid, 0xAA3333AA, "Usage: /report (id) [reason]");
  410.     if (iD == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xAA3333AA, "Player is not Connected");
  411.     if (playerid == iD) return SendClientMessage(playerid, 0xAA3333AA, "You can't report yourself.");
  412.     GetPlayerName(playerid, pName, sizeof(pName));
  413.     GetPlayerName(iD, aName, sizeof(aName));
  414.     for (new i = 0; i < MAX_PLAYERS; i++)
  415.     {
  416.         if (IsPlayerConnected(i))
  417.         {
  418.             if (IsPlayerAdmin(i) || PlayerAdminLevel[i] >= 1)
  419.             {
  420.                 SendClientMessage(playerid,0xFF7F50AA,"Your Report has been sent to any online admins");
  421.                 format(str, sizeof(str), "%s(%d) has reported %s(%d) for: %s", pName, playerid, aName, iD, reason);
  422.                 SendClientMessage(i, 0xFF7F50AA, str);
  423.                 SaveIn("reports",str);
  424.             }
  425.         }
  426.         else if(!IsPlayerConnected(i))
  427.         {
  428.         SendClientMessage(playerid,0xFFFFFFAA,"We are sorry but currently there is no admin online but your report has been saved into our database");
  429.         new escpname[24], escrname[24];
  430.         mysql_real_escape_string(pName, escrname);
  431.         mysql_real_escape_string(aName, escpname);
  432.         format(Query, sizeof(Query), "INSERT INTO `reports` (`id`, `reporter`, `reported`, `reason`)VALUES (NULL,'%s', '%s', '%s')", escpname, escrname, reason);
  433.         mysql_query(Query);
  434.         }
  435.     }
  436.     return 1;
  437. }
  438.  
  439. CMD:infect(playerid,params[])
  440. {
  441.     if(gTeam[playerid] != TEAM_ZOMBIE) return SendClientMessage(playerid,0xAA3333AA,"You are not Zombie");
  442.     new iD;
  443.     if(sscanf(params,"d",iD)) return SendClientMessage(playerid,0xAA3333AA,"Usage: /infect id");
  444.     if(iD == INVALID_PLAYER_ID) return SendClientMessage(playerid,0xAA3333AA,"Player is not Connected");
  445.     if(playerid == iD) return SendClientMessage(playerid,0xAA3333AA,"You can't infect yourself");
  446.     if(Infected[iD] == 1) return SendClientMessage(playerid,0xAA3333AA,"Player is already Infected");
  447.     if(Carrier[playerid] != 1) return SendClientMessage(playerid,0xAA3333AA,"You are not a Carrier");
  448.     if(GetDistanceBetweenPlayers(playerid,iD) >= 6) return SendClientMessage(playerid,0xAA3333AA,"Player is not Close enough");
  449.     Infected[playerid] =1;
  450.     infect = SetTimer("infection",2000,1);
  451. return 1;
  452. }
  453.  
  454. CMD:admins(playerid,params[])
  455. {
  456.     #pragma unused params
  457.     new aname[24],string[128];
  458.     SendClientMessage(playerid,0x87CEEBAA, "Admins Online (Red Means off Duty):");
  459.     for (new i=0; i < MAX_PLAYERS; i++)
  460.     {
  461.         GetPlayerName(i,aname,24);
  462.         if(IsPlayerConnected(i))
  463.         {
  464.             if(Hide[i] == 0)
  465.             {
  466.                 if(adminduty[i] == 1)
  467.                 {
  468.                     if(PlayerAdminLevel[i] == 1)
  469.                     {
  470.                         format(string,sizeof(string),"%s Level: 1",aname);
  471.                         SendClientMessage(playerid,0x87CEEBAA,string);
  472.                     }
  473.                     else if(PlayerAdminLevel[i] == 2)
  474.                     {
  475.                         format(string,sizeof(string),"%s Level: 2",aname);
  476.                         SendClientMessage(playerid,0x87CEEBAA,string);
  477.                     }
  478.                 }
  479.                 else if(adminduty[i] == 0)
  480.                 {
  481.                     if(PlayerAdminLevel[i] == 1)
  482.                     {
  483.                         format(string,sizeof(string),"%s Level: 1 [Off Duty]",aname);
  484.                         SendClientMessage(playerid,0xFF0000BAA,string);
  485.                     }
  486.                     else if(PlayerAdminLevel[i] == 2)
  487.                     {
  488.                         format(string,sizeof(string),"%s Level: 2 [Off Duty]",aname);
  489.                         SendClientMessage(playerid,0xFF0000AA,string);
  490.                     }
  491.                 }
  492.             }
  493.         }
  494.     }
  495. return 1;
  496. }
  497.  
  498. CMD:info(playerid,params[])
  499. {
  500.     #pragma unused params
  501.     new string[128],pname[24],Float:health,Float:armour;
  502.     GetPlayerName(playerid,pname,24);
  503.     GetPlayerHealth(playerid,health);
  504.     GetPlayerArmour(playerid,armour),
  505.     format(string,sizeof(string),"Infos of: %s",pname);
  506.     SendClientMessage(playerid,0x87CEEBAA,string);
  507.     if(gTeam[playerid] == TEAM_ZOMBIE)
  508.     {
  509.     SendClientMessage(playerid,0x87CEEBAA,"Team: Zombies");
  510.     }
  511.     if(gTeam[playerid] == TEAM_ZOMBIE && Carrier[playerid] == 1)
  512.     {
  513.     SendClientMessage(playerid,0x98CEEBAA,"Carrier: Yes");
  514.     }
  515.     if(gTeam[playerid] == TEAM_ZOMBIE && Carrier[playerid] == 0)
  516.     {
  517.     SendClientMessage(playerid,0x98CEEBAA,"Carrier: No");
  518.     }
  519.     if(gTeam[playerid] == TEAM_SURVIVOR)
  520.     {
  521.     SendClientMessage(playerid,0x87CEEBAA,"Team: Survivors");
  522.     }
  523.     format(string,sizeof(string),"Current health: %f",health);
  524.     SendClientMessage(playerid,0x87CEEBAA,string);
  525.     format(string,sizeof(string),"Current Armour: %f",armour);
  526.     SendClientMessage(playerid,0x87CEEBAA,string);
  527.     if(Infected[playerid] == 1)
  528.     {
  529.     SendClientMessage(playerid,0x87CEEBAA,"You are Infected. You will soon mutate to an zombie unless you find an Medi-Pack");
  530.     }
  531.     if(Infected[playerid] == 0)
  532.     {
  533.     SendClientMessage(playerid,0x87CEEBAA,"You are not Infected.");
  534.     }
  535.    
  536.     return 1;
  537. }
  538.  
  539. CMD:start(playerid,params[])
  540. {
  541.     if(PlayerAdminLevel[playerid] != 2) return SendClientMessage(playerid,0xFFFFFFAA,"You dont have Access to this command");
  542.     for(new i=0; i < MAX_PLAYERS; i++)
  543.     {
  544.         if(IsPlayerConnected(i) && roundstarted == 0)
  545.         {
  546.             SendClientMessageToAll(0x87CEEBAA,"Round has started. All late Joiners will join as zombie");
  547.             SetTimer("EndRound",600000,0);
  548.             KillTimer(await);
  549.             roundstarted=1;
  550.             TogglePlayerControllable(i,1);
  551.             return 1;
  552.         }
  553.         else if(roundstarted == 1) return SendClientMessage(playerid,0xFF0000AA,"Round already started");
  554.     }
  555. return 1;
  556. }
  557.  
  558. CMD:pm(playerid,params[])
  559. {
  560.     new sname[24],rname[24],msg,iD,string[128];
  561.     if(sscanf(params,"ds",iD,msg)) return SendClientMessage(playerid,0xAA3333AA,"Usage: /pm (id) [text]");
  562.     if(iD == INVALID_PLAYER_ID) return SendClientMessage(playerid,0xAA3333AA,"Player is not Connected");
  563.     if(playerid == iD) return SendClientMessage(playerid,0xAA3333AA,"You can't pm yourself");
  564.     if(Muted[playerid] == 1)
  565.     {
  566.     SendClientMessage(playerid,0xFF0000AA,"You are muted. You cannot chat");
  567.     return 0;
  568.     }
  569.     if(pmoff[playerid] == 1) return SendClientMessage(playerid,0xAA3333AA,"Player does not accept pms at the moment");
  570.     GetPlayerName(playerid,sname,24);
  571.     GetPlayerName(iD,rname,24);
  572.     format(string,sizeof(string),"PM Sent to: %s(%d) %s",rname,iD,msg);
  573.     SendClientMessage(playerid,0xFFFF00AA,string);
  574.     format(string,sizeof(string),"PM From: %s(%d) %s",sname,playerid,msg);
  575.     SendClientMessage(iD,0xFFFF00AA,string);
  576.     for (new i=0; i < MAX_PLAYERS; i++)
  577.     {
  578.         if(IsPlayerConnected(i))
  579.         {
  580.             if(Auth[i] == 1)
  581.             {
  582.                 if(PlayerAdminLevel[playerid] == 2)
  583.                 {
  584.                     if(playerid != i)
  585.                     {
  586.                    
  587.                         if(iD != i)
  588.                         {
  589.                         format(string,sizeof(string),"PM from %s(%d) to %s(%d): %s",sname,playerid,rname,iD,msg);
  590.                         SendClientMessage(i,0xFF0000AA,string);
  591.                         }
  592.                     }
  593.                    
  594.                 }
  595.             }
  596.         }
  597.     }
  598. return 1;
  599. }
  600.  
  601. public SaveIn(filename[],text[])
  602. {
  603.     new File:Lfile;
  604.     new filepath[256];
  605.     new string[256];
  606.     new year,month,day;
  607.     new hour,minute,second;
  608.  
  609.     getdate(year,month,day);
  610.     gettime(hour,minute,second);
  611.     format(filepath,sizeof(filepath),"/Logs/%s.log",filename);
  612.     Lfile = fopen(filepath,io_append);
  613.     format(string,sizeof(string),"[%02d/%02d/%02d | %02d:%02d:%02d] %s\r\n",day,month,year,hour,minute,second,text);
  614.     fwrite(Lfile,string);
  615.     fclose(Lfile);
  616.     return 1;
  617. }
  618.  
  619. public OnPlayerConnect(playerid)
  620. {
  621.     new string[128],pname[24],escpname[24];
  622.     GetPlayerName(playerid,pname,24);
  623.    
  624.     format(string,sizeof(string),"%s(%d) has joined Zombie Panic! Source",pname,playerid);
  625.     SendClientMessageToAll(0x333333AA,string);
  626.     mysql_real_escape_string(pname, escpname);
  627.     format(Query, sizeof(Query), "SELECT * FROM `users` WHERE `username` = '%s'", escpname); //Selects the line where the playername is the player
  628.     mysql_query(Query); //Querys the string
  629.     mysql_store_result(); //Stores the result
  630.     if(mysql_num_rows() != 0)
  631.     {
  632.         SendClientMessage(playerid,0x9ACD32AA,"This Playername is Registered. Please login before you spawn");
  633.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Your account has been found","Welcome on Zombie Panic! Source","Login","Cancle");
  634.  
  635.     }
  636.     else
  637.     {
  638.     format(string,sizeof(string),"Welcome on Zombie Panic! Source. Please Register");
  639.     SendClientMessage(playerid,0x9ACD32AA,"This Playername has not yet been registered. You must register on this server before you can play");
  640.     ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Your account has not been created yet",string,"Register","Cancle");
  641.     }
  642.     SetPlayerWeather(playerid,09);
  643.     pmoff[playerid] = 0;
  644.  
  645.     return 1;
  646. }
  647.  
  648. public OnPlayerDisconnect(playerid, reason)
  649. {
  650.     new msg[128];
  651.     new name[32],pip[16];
  652.     GetPlayerName(playerid, name, sizeof(name));
  653.     GetPlayerIp(playerid,pip,16);
  654.     format(msg, sizeof(msg), "\2;%s(%d) Has left the server (%s)\2;", name,playerid,aDisconnectNames[reason]);
  655.  
  656.     PlayerAdminLevel[playerid] =0;
  657.     InAdminMode[playerid] =0;
  658.     Infected[playerid] =0;
  659.     pmoff[playerid] = 0;
  660.     Carrier[playerid] =0;
  661.     Hide[playerid] =0;
  662.     SetPVarInt(playerid,"KilledByZombie",0);
  663.     format(Query,sizeof(Query),"UPDATE `users` SET `score` = '%d' WHERE username = '%s'",GetPlayerScore(playerid),name);
  664.     mysql_query(Query);
  665.     mysql_free_result();
  666.    
  667.     Auth[playerid] =0;
  668.  
  669.     new ConnectName[30], str[100];
  670.     GetPlayerName(playerid, ConnectName, 30);
  671.  
  672.     switch (reason) {
  673.         case 0: format(str, 256, "%s has left the server! (Timeout)", ConnectName);
  674.         case 1: format(str, 256, "%s has left the server! (Leaving)", ConnectName);
  675.         case 2: format(str, 256, "%s has left the server! (Kicked/Banned)", ConnectName);
  676.     }
  677.     SendClientMessageToAll(0x808080AA, str);
  678.  
  679.     return 1;
  680. }
  681.  
  682.  
  683. public OnPlayerSpawn(playerid)
  684. {
  685.     SetPlayerInterior(playerid,5);
  686.     if(roundstarted == 0)
  687.     {
  688.         TogglePlayerControllable(playerid,0);
  689.     }
  690.     else if(roundstarted == 1)
  691.     {
  692.         SendClientMessage(playerid,0xFFD859AA,"Round already started. Spawning as Zombie instead");
  693.         gTeam[playerid] = TEAM_ZOMBIE;
  694.         SetPlayerColor(playerid,0x8F0D0DAA);
  695.         SetPlayerHealth(playerid,200.0);
  696.         ResetPlayerWeapons(playerid);
  697.         TogglePlayerControllable(playerid,1);
  698.     }
  699.     if(GetPlayersInTeam(TEAM_ZOMBIE) == 0 && GetPlayersInTeam(TEAM_SURVIVOR) >= 1)
  700.     {
  701.         if(roundstarted == 0)
  702.         {
  703.             await = SetTimer("AwaitPlayers",4000,1);
  704.         }
  705.        
  706.     }
  707.     else if (GetPlayersInTeam(TEAM_SURVIVOR) == 0 && GetPlayersInTeam(TEAM_ZOMBIE) >= 1)
  708.     {
  709.       if(roundstarted == 0)
  710.         {
  711.             await = SetTimer("AwaitPlayers",4000,1);
  712.         }
  713.     }
  714.     else if(GetPlayersInTeam(TEAM_SURVIVOR) >= 1 && GetPlayersInTeam(TEAM_ZOMBIE) >=1 && roundstarted == 0)
  715.     {
  716.          SendClientMessage(playerid,0xFFD859AA,"Round will Start in a few seconds. You must Choose now if you wish to play as Survivor");
  717.          SetTimer("StartRound",4000,0);
  718.          KillTimer(await);
  719.     }
  720.    
  721.     if(ZombieLives== 0)
  722.     {
  723.         if(gTeam[playerid] == TEAM_ZOMBIE)
  724.         {
  725.             new rnd;
  726.             rnd = random(sizeof (SpectatorSpawn));
  727.             SetPlayerPos(playerid,SpectatorSpawn[rnd][0], SpectatorSpawn[rnd][1], SpectatorSpawn[rnd][2]);
  728.             SetPlayerFacingAngle(playerid,SpectatorSpawn[rnd][3]);
  729.             SetCameraBehindPlayer(playerid);
  730.             gTeam[playerid] = TEAM_SPEC;
  731.             TogglePlayerControllable(playerid,0);
  732.             ResetPlayerWeapons(playerid);
  733.             SetPlayerColor(playerid,0x999999CC);
  734.             TextDrawHideForPlayer(playerid,zombielive);
  735.             TextDrawDestroy(zombielive);
  736.             SetCameraBehindPlayer(playerid);
  737.            
  738.         }
  739.     }
  740.    
  741.     if(gTeam[playerid] == TEAM_SURVIVOR)
  742.     {
  743.         SetPlayerHealth(playerid,100.0);
  744.         SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,1);
  745.         SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,1);
  746.         SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,1);
  747.         SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,999);
  748.         SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,1);
  749.         SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,1);
  750.         SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,1);
  751.         SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,1);
  752.         SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,999);
  753.         SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,999);
  754.         SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,1);
  755.         SetPlayerColor(playerid,0x00FFFFAA);
  756.         SetCameraBehindPlayer(playerid);
  757.     }
  758.     else if(gTeam[playerid] == TEAM_ZOMBIE)
  759.     {
  760.         if(Carrier[playerid] == 0)
  761.         {
  762.             SetPlayerColor(playerid,0x8F0D0DAA);
  763.             SetPlayerHealth(playerid,200.0);
  764.             TextDrawHideForPlayer(playerid,zombielive);
  765.             ZombieLivesTextDraw(playerid);
  766.             SetCameraBehindPlayer(playerid);
  767.            
  768.         }
  769.         else if(Carrier[playerid] == 1)
  770.         {
  771.             SetPlayerColor(playerid,0xE3CE54AA);
  772.             SetPlayerHealth(playerid,250.0);
  773.             TextDrawHideForPlayer(playerid,zombielive);
  774.             ZombieLivesTextDraw(playerid);
  775.             SetCameraBehindPlayer(playerid);
  776.         }
  777.     }
  778.    
  779.     if(gTeam[playerid] == TEAM_SURVIVOR)
  780.     {
  781.     new rnd;
  782.     rnd = random(sizeof (SurvivorSpawn));
  783.     SetPlayerPos(playerid, SurvivorSpawn[rnd][0], SurvivorSpawn[rnd][1], SurvivorSpawn[rnd][2]);
  784.     SetPlayerFacingAngle(playerid, SurvivorSpawn[rnd][3]);
  785.     SetCameraBehindPlayer(playerid);
  786.     }
  787.    
  788.     if(gTeam[playerid] == TEAM_ZOMBIE)
  789.     {
  790.     new rnd;
  791.     rnd = random(sizeof (ZombieSpawn));
  792.     SetPlayerPos(playerid, ZombieSpawn[rnd][0], ZombieSpawn[rnd][1], ZombieSpawn[rnd][2]);
  793.     SetPlayerFacingAngle(playerid, ZombieSpawn[rnd][3]);
  794.     SetCameraBehindPlayer(playerid);
  795.     }
  796.    
  797.     return 1;
  798. }
  799.  
  800.  
  801. public OnPlayerDeath(playerid, killerid, reason)
  802. {
  803.     new string[128],pname[24],vname[24],oscore;
  804.     GetPlayerName(playerid,vname,24);
  805.     GetPlayerName(killerid,pname,24);
  806.     oscore = GetPlayerScore(killerid);
  807.    
  808.    
  809.     if(GetPlayersInTeam(TEAM_ZOMBIE) == 0)
  810.     {
  811.         GameTextForPlayer(playerid,"~w~Survivors win",10000,0);
  812.         TogglePlayerControllable(playerid,0);
  813.         roundstarted=0;
  814.     }
  815.     else
  816.     if(GetPlayersInTeam(TEAM_SURVIVOR) == 0)
  817.     {
  818.         GameTextForPlayer(playerid,"~w~Zombies win",10000,0);
  819.         TogglePlayerControllable(playerid,0);
  820.         roundstarted=0;
  821.     }
  822.  
  823.     if(gTeam[killerid] == TEAM_ZOMBIE)
  824.     {
  825.     format(string,sizeof(string),"ZOMBIE KILL: %s(%d) has killed %s(%d)",pname,killerid,vname,playerid);
  826.     SendZombieMessage(string);
  827.     SendDeathMessage(killerid,playerid,reason);
  828.     format(string,sizeof(string),"%s(%d) has killed you with Zombie Arms",pname,killerid);
  829.     SendClientMessage(playerid,COLOR_DARKGREEN,string);
  830.     SetPVarInt(playerid,"KilledByZombie",1);
  831.     KillTimer(infect);
  832.     ZombieLives+=1;
  833.     oscore +=1;
  834.     }
  835.     if(gTeam[killerid] == TEAM_SURVIVOR)
  836.     {
  837.     format(string,sizeof(string),"SURVIVOR KILL: %s(%d) has killed %s(%d)",pname,killerid,vname,playerid);
  838.     SendZombieMessage(string);
  839.     format(string,sizeof(string),"%s(%d) has killed you with a %s",pname,killerid,reason);
  840.     SendClientMessage(playerid,COLOR_DARKGREEN,string);
  841.     SendDeathMessage(killerid,playerid,reason);
  842.     ZombieLives-=1;
  843.     oscore +=1;
  844.     }
  845.    
  846.     if(InAdminMode[killerid] == 1)
  847.     {
  848.     format(string,sizeof(string),"%s(%d) has killed you while he was in admin mode",pname,killerid);
  849.     SendClientMessage(playerid,0xFF7F50AA,string);
  850.     format(string,sizeof(string),"You have killed %s(%d) while in admin mode",vname,playerid);
  851.     SendClientMessage(killerid,0xFF7F50AA,string);
  852.     SendDeathMessage(killerid,playerid,reason);
  853.     }
  854.  
  855.     return 1;
  856. }
  857.  
  858. public OnPlayerText(playerid, text[])
  859. {
  860.     if(Muted[playerid] == 1)
  861.     {
  862.     SendClientMessage(playerid,0xFF0000AA,"You are muted. You cannot chat");
  863.     return 0;
  864.     }
  865.     new string[128],pname[24];
  866.     GetPlayerName(playerid,pname,24);
  867.     format(string,sizeof(string),"%s(%d): %s",pname,playerid,text);
  868.     SaveIn("Chatlog",string);
  869.     return 1;
  870. }
  871.  
  872. public OnPlayerCommandText(playerid, cmdtext[])
  873. {
  874.     return 0;
  875. }
  876.  
  877. public OnPlayerRequestSpawn(playerid)
  878. {
  879.     if(GetPVarInt(playerid,"KilledByZombie") == 1)
  880.     {
  881.         SpawnPlayer(playerid);
  882.         gTeam[playerid] = TEAM_ZOMBIE;
  883.         SetPlayerColor(playerid,0x8F0D0DAA);
  884.         SetPlayerHealth(playerid,200.0);
  885.         SetPlayerSkin(playerid,33);
  886.        
  887.     }
  888.  
  889.     new pname[24],escpname[24];
  890.     GetPlayerName(playerid,pname,24);
  891.     mysql_real_escape_string(pname, escpname);
  892.     format(Query, sizeof(Query), "SELECT * FROM `users` WHERE `username` = '%s'", escpname); //Selects the line where the playername is the player
  893.     mysql_query(Query); //Querys the string
  894.     mysql_store_result(); //Stores the result
  895.     if(mysql_num_rows() != 0)
  896.     {
  897.       if(Auth[playerid] == 0)
  898.       {
  899.         GameTextForPlayer(playerid,"~w~ THIS PLAYER NAME IS REGISTERED~n~~r~!- YOU ARE NOT LOGGED IN -!",5000,3);
  900.         return 0;
  901.       }
  902.     }
  903.     else
  904.     {
  905.         if(Auth[playerid] == 0)
  906.         {
  907.             GameTextForPlayer(playerid,"~w~ PLAYER NAME NOT REGISTERED~n~~r~!- YOU ARE NOT REGISTERED -!",5000,3);
  908.             return 0;
  909.         }
  910.     }
  911.  
  912.  
  913.    new zombies = random(GetPlayersInTeam(TEAM_ZOMBIE));
  914.    for(new i=0; i < zombies; i++)
  915.    {
  916.     if(gTeam[i] == TEAM_ZOMBIE && Carrier[i] == 0)
  917.     {
  918.         Carrier[i]=1;
  919.     }
  920.     else if(gTeam[i] == TEAM_ZOMBIE && Carrier[i] == 1)
  921.     {
  922.         Carrier[i]=0;
  923.     }
  924.    }
  925.    
  926.    
  927.  
  928.     return 1;
  929. }
  930.  
  931.  
  932.  
  933. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  934. {
  935.     return 1;
  936. }
  937.  
  938. public OnRconLoginAttempt(ip[], password[], success)
  939. {
  940.     return 1;
  941. }
  942.  
  943. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  944. {
  945.     new pname[24],aname[24],string[128];
  946.     new escpname[24], escpass[100];
  947.    
  948.    
  949.    
  950.     if(dialogid == DIALOG_REGISTER)
  951.     {
  952.         GetPlayerName(playerid,pname,24);
  953.         mysql_real_escape_string(inputtext, escpass);
  954.         mysql_real_escape_string(pname, escpname);
  955.         format(Query,sizeof(Query),"INSERT INTO `users`(`reg_id`,`username`,`password`,`score`,`admin_level`, `banned`) VALUES (NULL, '%s', sha1('%s'), '0', '0','0')",escpname,escpass);
  956.         mysql_query(Query);
  957.         SendClientMessage(playerid,0x00A313AA,"You have been Registered you may now login");
  958.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Your account has been found","Welcome on Zombie Panic! Source","Login","Cancle");
  959.         return 1;
  960.     }
  961.     if(dialogid == DIALOG_LOGIN)
  962.     {
  963.         if(!strlen(inputtext))
  964.         {
  965.             SendClientMessage(playerid,0x966C0FAA,"Wrong Password");
  966.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Your account has been found","Welcome on Zombie Panic! Source","Login","Cancle");
  967.             return 1;
  968.         }
  969.         GetPlayerName(playerid,pname,24);
  970.         mysql_real_escape_string(inputtext, escpass);
  971.         mysql_real_escape_string(pname, escpname);
  972.         format(Query,sizeof(Query),"SELECT * FROM `users` WHERE username = '%s' AND password = sha1('%s')",escpname,escpass);
  973.         mysql_query(Query);
  974.         mysql_store_result();
  975.         if(!mysql_num_rows())
  976.         {
  977.             SendClientMessage(playerid,0x966C0FAA,"Wrong Password");
  978.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Your account has been found","Welcome on Zombie Panic! Source","Login","Cancle");
  979.             return 1;
  980.         }
  981.         else
  982.         {
  983.             new line[750];
  984.             if(mysql_fetch_row(line)) //Fetches the line
  985.             {
  986.                    new data[3];//The data strings
  987.                    new data2[5]; //The data variables
  988.                    sscanf(line, "p|dssdd",data2[1], data[1],data[2],data2[2],data2[3],data2[4]); //Splits the line with sscanf
  989.                    SetPlayerScore(playerid, data2[2]); //Sets players score
  990.                    PlayerAdminLevel[playerid] = data2[3]; //Sets players admin level
  991.                    mysql_free_result();
  992.                    Auth[playerid] = 1;
  993.                    if(PlayerAdminLevel[playerid] >= 1) adminduty[playerid] = 1;
  994.                    SendClientMessage(playerid, 0x009600AA, "You have been logged in!");
  995.                }
  996.         }
  997.  
  998.     }
  999.     if(dialogid == LEVEL1)
  1000.     {
  1001.         if(listitem == 0)
  1002.             {
  1003.             ShowPlayerDialog(playerid,DIALOG_KREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to kick the player","Kick","Close");
  1004.             }
  1005.             else if(listitem == 1)
  1006.             {
  1007.             ShowPlayerDialog(playerid,DIALOG_MREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to mute the player","Mute","Close");
  1008.             }
  1009.             else if(listitem == 2)
  1010.             {
  1011.             ShowPlayerDialog(playerid,DIALOG_UMREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to unmute the player","Unmute","Close");
  1012.             }
  1013.             else if(listitem == 3)
  1014.             {
  1015.             ShowPlayerDialog(playerid,DIALOG_FREEZE,DIALOG_STYLE_INPUT, "Admin Panel","Enter a reason to freeze the player","Freeze","Close");
  1016.             }
  1017.             else if(listitem == 4)
  1018.             {
  1019.             ShowPlayerDialog(playerid,DIALOG_UNFREEZE,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to unfreeze the player","Unfreeze","Close");
  1020.             }
  1021.     }
  1022.     if(dialogid == LEVEL2)
  1023.     {
  1024.             if(listitem == 0)
  1025.             {
  1026.             ShowPlayerDialog(playerid,DIALOG_KREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to kick the player","Kick","Close");
  1027.             }
  1028.             else if(listitem == 1)
  1029.             {
  1030.             ShowPlayerDialog(playerid,DIALOG_BREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to ban the player","Ban","Close");
  1031.             }
  1032.             else if(listitem == 2)
  1033.             {
  1034.             ShowPlayerDialog(playerid,DIALOG_MREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to mute the player","Mute","Close");
  1035.             }
  1036.             else if(listitem == 3)
  1037.             {
  1038.             ShowPlayerDialog(playerid,DIALOG_UMREASON,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to unmute the player","Unmute","Close");
  1039.             }
  1040.             else if(listitem == 4)
  1041.             {
  1042.             ShowPlayerDialog(playerid,DIALOG_FREEZE,DIALOG_STYLE_INPUT, "Admin Panel","Enter a reason to freeze the player","Freeze","Close");
  1043.             }
  1044.             else if(listitem == 5)
  1045.             {
  1046.             ShowPlayerDialog(playerid,DIALOG_UNFREEZE,DIALOG_STYLE_INPUT,"Admin Panel","Enter a reason to unfreeze the player","Unfreeze","Close");
  1047.             }
  1048.             else if(listitem == 6)
  1049.             {
  1050.             if(Infected[giveplayerid] == 1) return SendClientMessage(playerid,0xFF0000AA,"Player is already Infected");
  1051.             Infected[giveplayerid] =1;
  1052.             infect = SetTimer("infection",1000,1);
  1053.             }
  1054.             else if(listitem == 7)
  1055.             {
  1056.             if(Infected[giveplayerid] == 0) return SendClientMessage(playerid,0xFF0000AA,"Player is not Infected");
  1057.             Infected[giveplayerid] =0;
  1058.             KillTimer(infect);
  1059.             SetPlayerHealth(giveplayerid,100.0);
  1060.             }
  1061.             else if(listitem == 8)
  1062.             {
  1063.             if(gTeam[playerid] == TEAM_ZOMBIE)
  1064.             {
  1065.                 SendClientMessage(playerid,0x824908AA,"Player is already Zombie");
  1066.                 return 1;
  1067.             }
  1068.             Infected[giveplayerid] =0;
  1069.             KillTimer(infect);
  1070.             gTeam[giveplayerid] = TEAM_ZOMBIE;
  1071.             SetPlayerSkin(giveplayerid,33);
  1072.             ResetPlayerWeapons(giveplayerid);
  1073.             SetPlayerArmour(giveplayerid,0.0);
  1074.             SetPlayerHealth(giveplayerid,200);
  1075.             }
  1076.             else if(listitem == 9)
  1077.             {
  1078.             if(gTeam[playerid] == TEAM_SURVIVOR)
  1079.             {
  1080.                 SendClientMessage(playerid,0x824908AA,"Player is already Survivor");
  1081.                 return 1;
  1082.             }
  1083.             gTeam[giveplayerid] = TEAM_SURVIVOR;
  1084.             SetPlayerSkin(giveplayerid,11);
  1085.             GivePlayerWeapon(giveplayerid,2,1);
  1086.             GivePlayerWeapon(giveplayerid,22,27);
  1087.             SetPlayerArmour(giveplayerid,0.0);
  1088.             SetPlayerHealth(giveplayerid,100);
  1089.             SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,1);
  1090.             SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,1);
  1091.             SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,1);
  1092.             SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,999);
  1093.             SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,1);
  1094.             SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,1);
  1095.             SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,1);
  1096.             SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,1);
  1097.             SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,999);
  1098.             SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,999);
  1099.             SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,1);
  1100.             }
  1101.             else if(listitem == 10)
  1102.             {
  1103.                 ShowPlayerDialog(playerid,DIALOG_AKILL,DIALOG_STYLE_INPUT,"Admin Kill","Enter a reason why you kill him","Kill","Close");
  1104.             }
  1105.             else if(listitem == 11)
  1106.             {
  1107.                 ShowPlayerDialog(playerid,DIALOG_APM,DIALOG_STYLE_INPUT,"Admin Private Message","Enter the Message to send as Admin","Send","Close");
  1108.             }
  1109.  
  1110.     }
  1111.     if(dialogid == DIALOG_APM)
  1112.     {
  1113.         if(!response)
  1114.         {
  1115.             SendClientMessage(playerid,0xFF0000AA,"Error: You have aborted");
  1116.             return 1;
  1117.         }
  1118.         GetPlayerName(giveplayerid,pname,24);
  1119.         format(string,sizeof(string),"PM from Admin: %s",inputtext);
  1120.         SendClientMessage(giveplayerid,0xFF7F50AA,string);
  1121.         PlayerPlaySound(giveplayerid,1085,0.0,0.0,0.0);
  1122.         format(string,sizeof(string),"PM Send to %s(%d): %s",pname,giveplayerid,inputtext);
  1123.         SendClientMessage(playerid,0xFF7F50AA,string);
  1124.     }
  1125.     if(dialogid == DIALOG_AKILL)
  1126.     {
  1127.         if(!response)
  1128.         {
  1129.             SendClientMessage(playerid,0xFF0000AA,"Error: You have aborted");
  1130.             return 1;
  1131.         }
  1132.         GetPlayerName(giveplayerid,pname,24);
  1133.         format(string,sizeof(string),"%s(%d) has been killed by an admin. Reason: %s",pname,giveplayerid,inputtext);
  1134.         SendClientMessageToAll(0xFF7F50AA,string);
  1135.         SetPlayerHealth(giveplayerid,0.0);
  1136.         if(gTeam[giveplayerid] == TEAM_ZOMBIE)
  1137.         {
  1138.             ZombieLives-=1;
  1139.         }
  1140.         else if(gTeam[giveplayerid] == TEAM_SURVIVOR)
  1141.         {
  1142.             SetPVarInt(playerid,"KilledByZombie",1);
  1143.         }
  1144.     }
  1145.     if(dialogid == DIALOG_KREASON)
  1146.     {
  1147.         if(!response)
  1148.         {
  1149.             SendClientMessage(playerid,0xFF0000AA,"Error: You have aborted");
  1150.             return 1;
  1151.         }
  1152.         new escreason[250];
  1153.         mysql_real_escape_string(inputtext,escreason);
  1154.         GetPlayerName(playerid,aname,24);
  1155.         GetPlayerName(giveplayerid,pname,24);
  1156.         format(string,sizeof(string),"%s(%d) has been kicked by an admin. Reason: %s",pname,giveplayerid,inputtext);
  1157.         SendClientMessageToAll(0xFF7F50AA,string);
  1158.         format(Query,sizeof(Query),"INSERT INTO `zombie_panic_source`.`kicks` (`id`,`kickedname`,`kickername`,`reason`) VALUES (NULL, '%s', '%s', '%s')",pname,aname,escreason);
  1159.         mysql_query(Query);
  1160.         Kick(giveplayerid);
  1161.     }
  1162.    
  1163.     if(dialogid == DIALOG_BREASON)
  1164.     {
  1165.         new escreason[250];
  1166.         mysql_real_escape_string(inputtext,escreason);
  1167.         GetPlayerName(playerid,aname,24);
  1168.         GetPlayerName(giveplayerid,pname,24);
  1169.         format(string,sizeof(string),"%s(%d) has been BANNED by an admin. Reason: %s ",pname,giveplayerid,inputtext);
  1170.         SendClientMessageToAll(0xFF7F50AA,string);
  1171.         format(Query,sizeof(Query),"INSERT INTO `zombie_panic_source`.`bans` (`id` ,`bannedname` ,`bannername` ,`reason`) VALUES (NULL , '%s', '%s', '%s')",pname,aname,escreason);
  1172.         mysql_query(Query);
  1173.         BanEx(giveplayerid,escreason);
  1174.     }
  1175.    
  1176.     if(dialogid == DIALOG_MREASON)
  1177.     {
  1178.         GetPlayerName(giveplayerid,pname,24);
  1179.         if(Muted[giveplayerid] == 1) return SendClientMessage(playerid,0xFF0000AA,"Player is already muted");
  1180.         format(string,sizeof(string),"%s(%d) has been muted by an admin. Reason: %s",pname,giveplayerid,inputtext);
  1181.         SendClientMessageToAll(0xFF7F50AA,string);
  1182.         Muted[giveplayerid] =1;
  1183.     }
  1184.     if(dialogid == DIALOG_UMREASON)
  1185.     {
  1186.         GetPlayerName(giveplayerid,pname,24);
  1187.         if(Muted[giveplayerid] == 0) return SendClientMessage(playerid,0xFF0000AA,"Player is already unmuted");
  1188.         format(string,sizeof(string),"%s(%d) has been unmuted by an admin. Reason: %s",pname,giveplayerid,inputtext);
  1189.         SendClientMessageToAll(0xFF7F50AA,string);
  1190.         Muted[giveplayerid] =0;
  1191.     }
  1192.    
  1193.     if(dialogid == DIALOG_FREEZE)
  1194.     {
  1195.         GetPlayerName(giveplayerid,pname,24);
  1196.         format(string,sizeof(string),"%s(%d) has been frozen. Reason %s",pname,giveplayerid,inputtext);
  1197.         SendClientMessageToAll(0xFF7F50AA,string);
  1198.         TogglePlayerControllable(giveplayerid,0);
  1199.     }
  1200.    
  1201.     if(dialogid == DIALOG_UNFREEZE)
  1202.     {
  1203.         GetPlayerName(giveplayerid,pname,24);
  1204.         format(string,sizeof(string),"%s(%d) has been unfrozen. Reason %s",pname,giveplayerid,inputtext);
  1205.         SendClientMessageToAll(0xFF7F50AA,string);
  1206.         TogglePlayerControllable(giveplayerid,1);
  1207.     }
  1208.    
  1209.     return 1;
  1210. }
  1211.  
  1212. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  1213. {
  1214.     giveplayerid = clickedplayerid;
  1215.     if(PlayerAdminLevel[playerid] == 1)
  1216.     {
  1217.     ShowPlayerDialog(playerid,LEVEL1,DIALOG_STYLE_LIST,"Admin Level 1","Kick Player\r\nMute Player\r\nUnmute Player\r\nFreeze Player\r\nUnfreeze Player\r\nAdmin Private Message","Choose","Abort");
  1218.     }
  1219.     else
  1220.     if(PlayerAdminLevel[playerid] == 2)
  1221.     {
  1222.     ShowPlayerDialog(playerid,LEVEL2,DIALOG_STYLE_LIST,"Admin Level 2","Kick Player\r\nBan Player\r\nMute Player\r\nUnmute Player\r\nFreeze Player\r\nUnfreeze Player\r\nInfect\r\nCure Infection\r\nForce Zombie\r\nForce Survivor\r\nAdmin Kill\r\nAdmin Private Message","Choose","Abort");
  1223.     }
  1224.     return 1;
  1225. }
  1226.  
  1227. stock sscanf(string[], format[], {Float,_}:...)
  1228. {
  1229.     #if defined isnull
  1230.         if (isnull(string))
  1231.     #else
  1232.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1233.     #endif
  1234.         {
  1235.             return format[0];
  1236.         }
  1237.     #pragma tabsize 4
  1238.     new
  1239.         formatPos = 0,
  1240.         stringPos = 0,
  1241.         paramPos = 2,
  1242.         paramCount = numargs(),
  1243.         delim = ' ';
  1244.     while (string[stringPos] && string[stringPos] <= ' ')
  1245.     {
  1246.         stringPos++;
  1247.     }
  1248.     while (paramPos < paramCount && string[stringPos])
  1249.     {
  1250.         switch (format[formatPos++])
  1251.         {
  1252.             case '\0':
  1253.             {
  1254.                 return 0;
  1255.             }
  1256.             case 'i', 'd':
  1257.             {
  1258.                 new
  1259.                     neg = 1,
  1260.                     num = 0,
  1261.                     ch = string[stringPos];
  1262.                 if (ch == '-')
  1263.                 {
  1264.                     neg = -1;
  1265.                     ch = string[++stringPos];
  1266.                 }
  1267.                 do
  1268.                 {
  1269.                     stringPos++;
  1270.                     if ('0' <= ch <= '9')
  1271.                     {
  1272.                         num = (num * 10) + (ch - '0');
  1273.                     }
  1274.                     else
  1275.                     {
  1276.                         return -1;
  1277.                     }
  1278.                 }
  1279.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1280.                 setarg(paramPos, 0, num * neg);
  1281.             }
  1282.             case 'h', 'x':
  1283.             {
  1284.                 new
  1285.                     num = 0,
  1286.                     ch = string[stringPos];
  1287.                 do
  1288.                 {
  1289.                     stringPos++;
  1290.                     switch (ch)
  1291.                     {
  1292.                         case 'x', 'X':
  1293.                         {
  1294.                             num = 0;
  1295.                             continue;
  1296.                         }
  1297.                         case '0' .. '9':
  1298.                         {
  1299.                             num = (num << 4) | (ch - '0');
  1300.                         }
  1301.                         case 'a' .. 'f':
  1302.                         {
  1303.                             num = (num << 4) | (ch - ('a' - 10));
  1304.                         }
  1305.                         case 'A' .. 'F':
  1306.                         {
  1307.                             num = (num << 4) | (ch - ('A' - 10));
  1308.                         }
  1309.                         default:
  1310.                         {
  1311.                             return -1;
  1312.                         }
  1313.                     }
  1314.                 }
  1315.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1316.                 setarg(paramPos, 0, num);
  1317.             }
  1318.             case 'c':
  1319.             {
  1320.                 setarg(paramPos, 0, string[stringPos++]);
  1321.             }
  1322.             case 'f':
  1323.             {
  1324.  
  1325.                 new changestr[16], changepos = 0, strpos = stringPos;
  1326.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1327.                 {
  1328.                     changestr[changepos++] = string[strpos++];
  1329.                     }
  1330.                 changestr[changepos] = '\0';
  1331.                 setarg(paramPos,0,_:floatstr(changestr));
  1332.             }
  1333.             case 'p':
  1334.             {
  1335.                 delim = format[formatPos++];
  1336.                 continue;
  1337.             }
  1338.             case '\'':
  1339.             {
  1340.                 new
  1341.                     end = formatPos - 1,
  1342.                     ch;
  1343.                 while ((ch = format[++end]) && ch != '\'') {}
  1344.                 if (!ch)
  1345.                 {
  1346.                     return -1;
  1347.                 }
  1348.                 format[end] = '\0';
  1349.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1350.                 {
  1351.                     if (format[end + 1])
  1352.                     {
  1353.                         return -1;
  1354.                     }
  1355.                     return 0;
  1356.                 }
  1357.                 format[end] = '\'';
  1358.                 stringPos = ch + (end - formatPos);
  1359.                 formatPos = end + 1;
  1360.             }
  1361.             case 'u':
  1362.             {
  1363.                 new
  1364.                     end = stringPos - 1,
  1365.                     id = 0,
  1366.                     bool:num = true,
  1367.                     ch;
  1368.                 while ((ch = string[++end]) && ch != delim)
  1369.                 {
  1370.                     if (num)
  1371.                     {
  1372.                         if ('0' <= ch <= '9')
  1373.                         {
  1374.                             id = (id * 10) + (ch - '0');
  1375.                         }
  1376.                         else
  1377.                         {
  1378.                             num = false;
  1379.                         }
  1380.                     }
  1381.                 }
  1382.                 if (num && IsPlayerConnected(id))
  1383.                 {
  1384.                     setarg(paramPos, 0, id);
  1385.                 }
  1386.                 else
  1387.                 {
  1388.                     #if !defined foreach
  1389.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1390.                         #define __SSCANF_FOREACH__
  1391.                     #endif
  1392.                     string[end] = '\0';
  1393.                     num = false;
  1394.                     new
  1395.                         name[MAX_PLAYER_NAME];
  1396.                     id = end - stringPos;
  1397.                     foreach (Player, playerid)
  1398.                     {
  1399.                         GetPlayerName(playerid, name, sizeof (name));
  1400.                         if (!strcmp(name, string[stringPos], true, id))
  1401.                         {
  1402.                             setarg(paramPos, 0, playerid);
  1403.                             num = true;
  1404.                             break;
  1405.                         }
  1406.                     }
  1407.                     if (!num)
  1408.                     {
  1409.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  1410.                     }
  1411.                     string[end] = ch;
  1412.                     #if defined __SSCANF_FOREACH__
  1413.                         #undef foreach
  1414.                         #undef __SSCANF_FOREACH__
  1415.                     #endif
  1416.                 }
  1417.                 stringPos = end;
  1418.             }
  1419.             case 's', 'z':
  1420.             {
  1421.                 new
  1422.                     i = 0,
  1423.                     ch;
  1424.                 if (format[formatPos])
  1425.                 {
  1426.                     while ((ch = string[stringPos++]) && ch != delim)
  1427.                     {
  1428.                         setarg(paramPos, i++, ch);
  1429.                     }
  1430.                     if (!i)
  1431.                     {
  1432.                         return -1;
  1433.                     }
  1434.                 }
  1435.                 else
  1436.                 {
  1437.                     while ((ch = string[stringPos++]))
  1438.                     {
  1439.                         setarg(paramPos, i++, ch);
  1440.                     }
  1441.                 }
  1442.                 stringPos--;
  1443.                 setarg(paramPos, i, '\0');
  1444.             }
  1445.             default:
  1446.             {
  1447.                 continue;
  1448.             }
  1449.         }
  1450.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1451.         {
  1452.             stringPos++;
  1453.         }
  1454.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1455.         {
  1456.             stringPos++;
  1457.         }
  1458.         paramPos++;
  1459.     }
  1460.     do
  1461.     {
  1462.         if ((delim = format[formatPos++]) > ' ')
  1463.         {
  1464.             if (delim == '\'')
  1465.             {
  1466.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1467.             }
  1468.             else if (delim != 'z')
  1469.             {
  1470.                 return delim;
  1471.             }
  1472.         }
  1473.     }
  1474.     while (delim > ' ');
  1475.     return 0;
  1476. }
  1477.  
  1478.  
  1479. stock GetPlayersInTeam(TEAM)
  1480. {
  1481.     new players;
  1482.     for (new i; i < MAX_PLAYERS; i++)
  1483.     {
  1484.         if (IsPlayerConnected(i))
  1485.         {
  1486.             if (gTeam[i] == TEAM) players++;
  1487.         }
  1488.     }
  1489.     return players;
  1490. }
  1491.  
  1492.  
  1493. ZombieLivesTextDraw(playerid)
  1494. {
  1495.     new string[10];
  1496.     format(string,sizeof(string),"%d",ZombieLives);
  1497.     zombielive = TextDrawCreate(18.0,170.0,string);
  1498.     TextDrawColor(zombielive,0xFF0000AA);
  1499.     TextDrawSetOutline(zombielive,1);
  1500.     TextDrawSetShadow(zombielive,0);
  1501.     TextDrawFont(zombielive,0);
  1502.     TextDrawLetterSize(zombielive,1.0,2.0);
  1503.     TextDrawShowForPlayer(playerid,zombielive);
  1504. }
  1505. stock SendZombieMessage(Message[])
  1506. {
  1507.     for(new i; i<MAX_PLAYERS; i++)
  1508.     {
  1509.       if(gTeam[i] == TEAM_ZOMBIE) SendClientMessage(i, 0x8F0D0DAA, Message); // beim Stock  am ende Message   beim script string   versuche es mal so
  1510.     }
  1511. }
  1512.  
  1513. stock SendSurvivorMessage(Message[])
  1514. {
  1515.     for(new i; i<MAX_PLAYERS; i++)
  1516.     {
  1517.       if(gTeam[i] == TEAM_SURVIVOR) SendClientMessage(i, 0x00FFFFAA, Message); // beim Stock  am ende Message   beim script string   versuche es mal so
  1518.     }
  1519. }
  1520.  
  1521. stock SendAdminMessage(Message[])
  1522. {
  1523.     for(new i; i<MAX_PLAYERS; i++)
  1524.     {
  1525.       if(PlayerAdminLevel[i] == 2) SendClientMessage(i, 0xFF0000AA, Message); // beim Stock  am ende Message   beim script string   versuche es mal so
  1526.     }
  1527. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement