Advertisement
Guest User

ajuda samp

a guest
Mar 29th, 2013
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 53.00 KB | None | 0 0
  1. /*
  2.     s-Admin V1.4 Release
  3.         ->About:
  4.             s-Admin is a simple admin script with just the nessesary commands, why ?
  5.             Well i like admin scripts clean and usefull, and not full of useless commands.
  6.            
  7.             It supports MYSQL, but also Y_INI so the users can decide for themself if they want to use
  8.             textfiles or an online database. s-Admin also provides a dialogged GUI, the administrator can just
  9.             doubleclick on a player in the scorelist and it will show up a dialog with several options.
  10.            
  11.             s-Admin also saves the player stats (like score,money) and includes an anti-jail/mute evade.
  12.            
  13.         ->Commands:
  14.             Player      (Level 0):
  15.                 Command:        Parameters:                         Explaination:
  16.                 /admins         none                                Lists all online administrator
  17.                 /changepassword [oldpassword] [newpassword]         Allows the player to change his password
  18.                 /stats          none                                Rettreive's playerstats
  19.                 /whois          [playerid]                          Rettreive information about given playerid
  20.                 /whowas         [playername]                        Rettreive information about given playername
  21.                 /report         [playerid] [reason]                 Reports another player (this will be shown to online admins and in Rcon console)
  22.            
  23.             Moderator   (Level 1):
  24.                 Command:        Parameters:                         Explaination:
  25.                 /acmds          none                                Shows all admin commands
  26.                 /a              [text]                              Adminchat
  27.                 /announce       [text]                              Announce a message
  28.                 /spectate       [playerid]                          Spectate player
  29.                 /stop           none                                Stops spectating player
  30.                 /disarm         [playerid]                          Resets player weapons of playerid
  31.                 /mute           [playerid] [reason (optional)]      Mutes player
  32.                 /unmute         [playerid]                          Unmutes player
  33.                 /freeze         [playerid] [reason (optional)]      Freezes player
  34.                 /unfreeze       [playerid]                          Unfreezes player
  35.                 /jail           [playerid] [reason (optional)]      Jails player
  36.                 /unjail         [playerid]                          Unjails player
  37.                 /kick           [playerid] [reason (optional)]      Kicks player
  38.                
  39.             Administrator   (Level 2):
  40.                 Command:        Parameters:                         Explaination:
  41.                 /veh            [vehiclename]                       Spawns a vehicle for the admin
  42.                 /get            [playerid]                          Teleports given playerid to the admin
  43.                 /goto           [playerid]                          Teleports admin to the given playerid
  44.                 /giveweapon     [playerid][weaponid][ammo]          Gives weapon to given playerid
  45.                 /setmoney       [playerid][ammount]                 Changes money of playerid
  46.                 /setscore       [playerid][ammount]                 Changes score of playerid
  47.                 /explode        [playerid]                          Explodes playerid
  48.                 /ban            [playerid] [reason (optional)]      Bans the playerid
  49.                 /banip          [ip]                                Bans the given IP
  50.                 /annoy          [playerid]                          Releases a cow on the player! (Known from Hiddos's annoying cow script)
  51.                 /catchcow                                           Removes released cow
  52.  
  53.             Owner           (Level 3):
  54.                 Command:        Parameters:                         Explaination:
  55.                 /setlevel       [playerid][level]                   Adjust the rights of the player (Level 0/3)
  56.                 /unbanip        [ip]                                Unbans the given IP
  57.  
  58.  
  59.         ->Credits:
  60.             Hiddos for his annoying cow script
  61.             Zeex for ZCMD
  62.             Y_Less for sscanf2
  63.             Y_Less for Y_INI
  64.             G-sTyLeZzZ for his MYSQL Plugin
  65.  
  66.         ->Changelog:
  67.             1b:
  68.                 - /stats colors are better
  69.                 - /admins colors are better
  70.                 - adminchat has now a space
  71.             1c:
  72.                 - You cannot click on yourself in the scorelist anymore
  73.                 - /countdown command added
  74.                 - /veh has been optimised
  75.                 - /giveweapon is now using weapon names instead of ID's
  76.                 - s-Admin is now using gLibrary 1.1
  77.             1.1:
  78.                 - Optimised code (using gLibrary 1.2) and better colors
  79.                 - s-Admin now also saves IP
  80.                 - passwords will now be hashed with WhirlPool
  81.                 - /whois is now public
  82.                 - /whowas added
  83.             1.2:
  84.                 - Returns fixed
  85.                 - Colors changed again (looks much better now)
  86.                 - Some VERY important security issues fixed (logging in)
  87.                 - Return problem fixed (compability with other scripts using dialogs)
  88.             1.3:
  89.                 - System uses new gLibrary (problem solved with OnPlayerDisconnect)
  90.                 - /veh has been fixed
  91.                 - /report has been fixed
  92. */
  93. #include <a_samp>
  94. #include <sscanf2>
  95. #include <zcmd>
  96. #include <gLibrary>
  97. native WP_Hash(buffer[], len, const str[]);
  98. //================================================================================================================
  99. //------------------Settings------------------
  100. #define USE_MYSQL_DATABASE              false       //if defined false, it will use Y_INI (text files) instead
  101.  
  102. #define MAX_LOGIN_ATTEMPTS              3           //maximum login attempts before kick
  103. #define DIALOG_RANGE                    100         //dialog range (100 by default, will use dialogid's 100-104)
  104.  
  105. #define ALLOW_ANNOY                     true        //allow administrators so release a crazy cow on players!
  106. #define ALLOW_ADMINS                    true        //you can turn this off if you dont want to allow players using /admins to see if there is an admin online
  107. #define ALLOW_VEH                       true        //allows admins to spawn vehicles
  108. //----------------SQL Settings----------------      //only needs to be set when you use mysql db
  109. #define HOST    "localhost"
  110. #define USER    "root"
  111. #define DB      "s-admin"
  112. #define PASS    ""
  113.  
  114. //================================================================================================================
  115. //ignore these
  116. #define abs(%0) ((%0) >= 0 ? (%0) : -(%0))
  117. new cow_victim = -1, object_cow, movecow_timer;
  118. #if USE_MYSQL_DATABASE == true
  119.     #include <yoursql>
  120. #else
  121.     #define MAX_INI_ENTRY_TEXT 129
  122.     #include <YSI/y_ini>
  123. #endif
  124. #define color_red gCOLOR_RED
  125. #define color_green gCOLOR_GREEN
  126. #define color_gray gCOLOR_GRAY
  127. #define color_orange gCOLOR_ORANGE
  128. #define color_blue 0xADD8E6FF
  129. #define color_yellow gCOLOR_YELLOW
  130. #define DIALOG_REGISTER DIALOG_RANGE
  131. #define DIALOG_LOGIN DIALOG_RANGE +1
  132. #define DIALOG_CHANGENICK DIALOG_RANGE +2
  133. #define DIALOG_REPORT DIALOG_RANGE +3
  134. #define DIALOG_ADMIN DIALOG_RANGE +4
  135.  
  136. enum gPlayerInfo
  137. {
  138.     Username[32],
  139.     Password[129],
  140.     Muted,
  141.     Jailed,
  142.     Score,
  143.     Money,
  144.     Level,
  145.     Ip[32]
  146. }
  147. new PlayerInfo[MAX_PLAYERS][gPlayerInfo];
  148.  
  149. enum gTempInfo
  150. {
  151.     Username[32],
  152.     Password[129],
  153.     Muted,
  154.     Jailed,
  155.     Score,
  156.     Money,
  157.     Level,
  158.     Ip[32]
  159. }
  160. new TempInfo[gPlayerInfo];
  161.  
  162. new UpdateSpectateTimer[MAX_PLAYERS];
  163. new bool:CountDownInProgress = false;
  164. new countdown_counter = 5;
  165.  
  166. //================================================================================================================
  167. //basic script
  168. public OnFilterScriptInit()
  169. {
  170.     print("\n--------------------------------------");
  171.     print("     Gamer's admin script       V1.1    ");
  172.     print("--------------------------------------\n");
  173.     #if USE_MYSQL_DATABASE == true
  174.         yoursql_connect(HOST,USER,DB,PASS);
  175.     #endif
  176.     for(new i = 0;i<MAX_PLAYERS;i++)
  177.     {
  178.         if(!IsPlayerConnected(i)) continue;
  179.         OnPlayerConnect(i);
  180.     }
  181.     return 1;
  182. }
  183.  
  184. public OnFilterScriptExit()
  185. {
  186.     for(new i = 0;i<MAX_PLAYERS;i++)
  187.     {
  188.         if(!IsPlayerConnected(i)) continue;
  189.         SaveUser(i);
  190.     }
  191.     #if USE_MYSQL_DATABASE == true
  192.         yoursql_close();
  193.     #endif
  194.     return 1;
  195. }
  196.  
  197. public OnPlayerConnect(playerid)
  198. {
  199.     format(PlayerInfo[playerid][Username],32," ");
  200.     format(PlayerInfo[playerid][Password],32," ");
  201.     PlayerInfo[playerid][Level] = 0;
  202.     new pName[MAX_PLAYER_NAME],string[96];GetPlayerName(playerid,pName,sizeof pName);
  203.     if(IsPlayerNPC(playerid)) return 1;
  204.     #if USE_MYSQL_DATABASE == true
  205.         format(string,sizeof string,"SELECT * FROM users WHERE Username = '%s'",yoursql_escape_string(pName));
  206.         if(yoursql_countrows(string) == 0)
  207.         {
  208.             ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registo de Conta","Regista a tua conta escrevendo a tua password","Registar","Sair");
  209.         } else {
  210.             LoadUser(playerid,pName);
  211.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Registo de Conta","Esta conta esta registada, escreve a tua password.","Login","Mudar Nome");
  212.             SetPVarInt(playerid,"attempt",0);
  213.         }
  214.     #else
  215.         format(string,sizeof string,"Users/%s.ini",pName);
  216.         if(!fexist(string))
  217.         {
  218.             ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registo de Conta","Regista a tua conta escrevendo a tua password","Registar","Sair");
  219.         } else {
  220.             LoadUser(playerid,pName);
  221.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","Esta conta esta registada, escreve a tua password.","Login","Mudar Nome");
  222.             SetPVarInt(playerid,"attempt",0);
  223.         }
  224.     #endif
  225.     return 1;
  226. }
  227. public OnPlayerSpawn(playerid)
  228. {
  229.     if(PlayerInfo[playerid][Jailed] == 1)
  230.     {
  231.         SendClientMessageToAllEx(color_red,"ss",PlayerInfo[playerid][Username]," is automaticly jailed (Jail evade).");
  232.         SetTimerEx("JailOnSpawnDelay",1000,false,"i",playerid);
  233.     } else if (PlayerInfo[playerid][Muted] == 1){
  234.         SendClientMessageToAllEx(color_red,"ss",PlayerInfo[playerid][Username]," is automaticly muted (Mute evade).");
  235.     }
  236.     return 1;
  237. }
  238. forward JailOnSpawnDelay(playerid);
  239. public JailOnSpawnDelay(playerid)
  240. {
  241.     JailPlayer(playerid);
  242. }
  243.  
  244. public OnPlayerDisconnect(playerid, reason)
  245. {
  246.     if(!IsPlayerNPC(playerid))
  247.     {
  248.         SaveUser(playerid);
  249.         if(cow_victim == playerid)
  250.         {
  251.             StopAnnoying();
  252.         }
  253.     }
  254.     return 1;
  255. }
  256.  
  257. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  258. {
  259.     if(playerid == clickedplayerid) return SendClientMessage(playerid,color_red,"You cannot open the usermenu for yourself!");
  260.     SetPVarInt(playerid,"selectedid",clickedplayerid);
  261.     switch(PlayerInfo[playerid][Level])
  262.     {
  263.         case 0:{
  264.             if(!IsPlayerAdmin(playerid))
  265.             {
  266.                 ShowPlayerDialog(playerid,DIALOG_REPORT,DIALOG_STYLE_INPUT,"Report player","Please fill in a valid reason:","OK","Cancel");
  267.             } else ShowPlayerDialog(playerid,DIALOG_ADMIN,DIALOG_STYLE_LIST,"Administrator menu","Spectate\nDisarm\nMute\nUnmute\nFreeze\nUnfreeze\nJail\nUnjail\nKick\nGet\nGoto\nAnnoy\nBan","OK","Cancel");
  268.         }
  269.         case 1:ShowPlayerDialog(playerid,DIALOG_ADMIN,DIALOG_STYLE_LIST,"Moderator menu","Spectate\nDisarm\nMute\nUnmute\nFreeze\nUnfreeze\nJail\nUnjail\nKick","OK","Cancel");
  270.         case 2,3:ShowPlayerDialog(playerid,DIALOG_ADMIN,DIALOG_STYLE_LIST,"Administrator menu","Spectate\nDisarm\nMute\nUnmute\nFreeze\nUnfreeze\n\nJail\nUnjail\nKick\nGet\nGoto\nAnnoy\nBan","OK","Cancel");
  271.     }
  272.     return 1;
  273. }
  274.  
  275. //================================================================================================================
  276. //dialog handler
  277. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  278. {
  279.     switch(dialogid)
  280.     {
  281.         case(DIALOG_REGISTER):
  282.         {
  283.             if(!response)
  284.             {
  285.                 SendClientMessageToAllEx(color_gray,"ss",PlayerInfo[playerid][Username]," has been kicked by the server (Quit at registration).");
  286.                 Kick(playerid);
  287.             }
  288.             OnPlayerRegister(playerid,inputtext);
  289.         }
  290.        
  291.         case(DIALOG_LOGIN):
  292.         {
  293.             if(!response) return ShowPlayerDialog(playerid,DIALOG_CHANGENICK,DIALOG_STYLE_INPUT,"Account registration","Please fill in a nickname:","OK","Quit");
  294.             if(GetPVarInt(playerid,"attempt") == MAX_LOGIN_ATTEMPTS)
  295.             {
  296.                 SendClientMessageToAllEx(color_gray,"ss",PlayerInfo[playerid][Username]," has been kicked by the server (Failed to login).");
  297.                 Kick(playerid);
  298.             } else {
  299.                 if(!strlen(inputtext))
  300.                 {
  301.                     SendClientMessageEx(playerid,color_red,"sisis","You have failed to login (attempt ",GetPVarInt(playerid,"attempt") +1,"/",MAX_LOGIN_ATTEMPTS,").");
  302.                     ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","This account is registered! Please fill in a password to join.","Login","Change username");
  303.                     SetPVarInt(playerid,"attempt",GetPVarInt(playerid,"attempt") +1);
  304.                     printf("%s failed to login (attempt %i/%i).",PlayerInfo[playerid][Username],GetPVarInt(playerid,"attempt"),MAX_LOGIN_ATTEMPTS);
  305.                 }
  306.                 new buffer[129];WP_Hash(buffer,sizeof buffer,inputtext);
  307.                 if(!strcmp(buffer,PlayerInfo[playerid][Password]))
  308.                 {
  309.                     if(PlayerInfo[playerid][Level] > 0)
  310.                     {
  311.                         SendClientMessageEx(playerid,color_green,"sis","You have succesfully logged in as level ",PlayerInfo[playerid][Level]," admin!");
  312.                     } else SendClientMessage(playerid,color_green,"You have succesfully logged in.");
  313.                     SendClientMessageToAllEx(color_green,"ss",PlayerInfo[playerid][Username]," has logged in, welcome back!");
  314.                     printf("%s has logged in.",PlayerInfo[playerid][Username]);
  315.                 } else {
  316.                     SendClientMessageEx(playerid,color_red,"sisis","You have failed to login (attempt ",GetPVarInt(playerid,"attempt") +1,"/",MAX_LOGIN_ATTEMPTS,").");
  317.                     ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","This account is registered! Please fill in a password to join.","Login","Change username");
  318.                     SetPVarInt(playerid,"attempt",GetPVarInt(playerid,"attempt") +1);
  319.                     printf("%s failed to login (attempt %i/%i).",PlayerInfo[playerid][Username],GetPVarInt(playerid,"attempt"),MAX_LOGIN_ATTEMPTS);
  320.                 }
  321.             }
  322.         }
  323.        
  324.         case(DIALOG_CHANGENICK):
  325.         {
  326.             if(!response)
  327.             {
  328.                 SendClientMessageToAllEx(color_gray,"ss",PlayerInfo[playerid][Username]," has been kicked by the server (Quit at registration).");
  329.                 Kick(playerid);
  330.             }
  331.             if(!strlen(inputtext))
  332.             {
  333.                 SendClientMessage(playerid,color_red,"Account registration: Please fill in a valid username!");
  334.                 ShowPlayerDialog(playerid,DIALOG_CHANGENICK,DIALOG_STYLE_INPUT,"Account registration","Please fill in a nickname:","OK","Quit");
  335.             }
  336.             SetPlayerName(playerid,inputtext);
  337.             OnPlayerConnect(playerid);
  338.         }
  339.         case(DIALOG_REPORT):
  340.         {
  341.             if(!response) return 1;
  342.             new id = GetPVarInt(playerid,"selectedid");
  343.             new reason[64];format(reason,sizeof reason,"%s",inputtext);
  344.             if(!strlen(reason)) return SendClientMessage(playerid,color_red,"No valid reason.");
  345.             new counter = 0;for(new i = 0;i<MAX_PLAYERS;i++)
  346.             {
  347.                 if(!IsPlayerConnected(i)) continue;
  348.                 if(PlayerInfo[i][Level] > 0)
  349.                 {
  350.                     SendClientMessageEx(i,color_orange,"sssisssisss","Incomming report from ",PlayerInfo[playerid][Username],"(",playerid,") Reporting ",PlayerInfo[id][Username],"(",id,"), Reason: ",reason,".");
  351.                     counter++;
  352.                 }
  353.             }
  354.             printf("%s has reported %s (Reason:%s)",PlayerInfo[playerid][Username],PlayerInfo[id][Username],reason);
  355.             return SendClientMessageEx(playerid,color_orange,"sis","O teu report foi enviado a todos os administradores (",counter," de momento.).");
  356.         }
  357.         case(DIALOG_ADMIN):
  358.         {
  359.             if(!response) return 1;
  360.             new id = GetPVarInt(playerid,"selectedid");
  361.             switch(listitem)
  362.             {
  363.                 case 0://spectate
  364.                 {
  365.                     if(GetPVarInt(playerid,"spectating") == 1) return SendClientMessage(playerid,color_red,"You are already spectating! Please use /stop to turn spectatemode off.");
  366.                     TogglePlayerSpectating(playerid,1);
  367.                     SetPVarInt(playerid,"spectating",1);
  368.                     if(IsPlayerInAnyVehicle(id))
  369.                     {
  370.                         SetPVarInt(playerid,"state",1);
  371.                         PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
  372.                     } else {
  373.                         SetPVarInt(playerid,"state",0);
  374.                         PlayerSpectatePlayer(playerid,id);
  375.                     }
  376.                     UpdateSpectateTimer[playerid] = SetTimerEx("UpdateAdminSpectate",1000,true,"ii",playerid,id);
  377.                     return SendClientMessageEx(playerid,color_green,"sss","You are now spectating ",PlayerInfo[id][Username]," . You can use /stop to switch back to normal mode.");
  378.                 }
  379.                 case 1: //disarm
  380.                 {
  381.                     ResetPlayerWeapons(id);
  382.                     return SendClientMessageToAllEx(color_red,"ssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} disarmed ",PlayerInfo[id][Username],".");
  383.                 }
  384.                 case 2://mute
  385.                 {
  386.                     if(PlayerInfo[id][Muted] == 1) return SendClientMessage(playerid,color_red,"Player is already muted!");
  387.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} muted ",PlayerInfo[id][Username],".");
  388.                     PlayerInfo[id][Muted] = 1;
  389.                     return MutePlayer(id);
  390.                 }
  391.                 case 3://unmute
  392.                 {
  393.                     if(PlayerInfo[id][Muted] == 0) return SendClientMessage(playerid,color_red,"Player is not muted!");
  394.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} unmuted ",PlayerInfo[id][Username],".");
  395.                     PlayerInfo[id][Muted] = 0;
  396.                     return UnMutePlayer(id);
  397.                 }
  398.                 case 4://freeze
  399.                 {
  400.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} froze ",PlayerInfo[id][Username],".");
  401.                     return TogglePlayerControllable(id,0);
  402.                 }
  403.                 case 5://unfreeze
  404.                 {
  405.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} unfroze ",PlayerInfo[id][Username],".");
  406.                     return TogglePlayerControllable(id,1);
  407.                 }
  408.                 case 6://jail
  409.                 {
  410.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} jailed ",PlayerInfo[id][Username],".");
  411.                     PlayerInfo[id][Jailed] = 1;
  412.                     return JailPlayer(id);
  413.                 }
  414.                 case 7: //unjail
  415.                 {
  416.                     if(PlayerInfo[id][Jailed] == 0) return SendClientMessage(playerid,color_red,"Player is not jailed!");
  417.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} unjailed ",PlayerInfo[id][Username],".");
  418.                     PlayerInfo[id][Jailed] = 0;
  419.                     return UnJailPlayer(id);
  420.                 }
  421.                 case 8://kick
  422.                 {
  423.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} kicked ",PlayerInfo[id][Username],".");
  424.                     return Kick(id);
  425.                 }
  426.                 case 9://get
  427.                 {
  428.                     new Float:x,Float:y,Float:z;GetPlayerPos(playerid,x,y,z);x = x +2;
  429.                     SetPlayerPos(id,x,y,z);
  430.                     SendClientMessageEx(playerid,color_green,"sss","You have teleported ",PlayerInfo[id][Username]," to your position!");
  431.                     return SendClientMessageEx(id,color_green,"sss","Administrador ",PlayerInfo[playerid][Username]," has teleported you to his position!");
  432.                 }
  433.                 case 10://goto
  434.                 {
  435.                     new Float:x,Float:y,Float:z;GetPlayerPos(id,x,y,z);x = x +2;
  436.                     SetPlayerPos(playerid,x,y,z);
  437.                     return SendClientMessageEx(playerid,color_red,"sss","You have teleported to ",PlayerInfo[id][Username],"'s position!");
  438.                 }
  439.                 case 11://annoy
  440.                 {
  441.                     if(cow_victim != -1) return SendClientMessage(playerid,color_red,"Sorry! It seems like your cow has already been stolen by another Administrador.");
  442.                     #if ALLOW_ANNOY == false
  443.                         return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  444.                     #else
  445.                     AnnoyPlayer(id);
  446.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} has released his cow on ",PlayerInfo[id][Username]," !!!");
  447.                     return SendClientMessageEx(playerid,color_green,"sss","You have released your cow on ",PlayerInfo[id][Username],"! please use /catchcow to bring him back.");
  448.                     #endif
  449.                 }
  450.                 case 12://ban
  451.                 {
  452.                     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} banned ",PlayerInfo[id][Username],".");
  453.                     return Ban(id);
  454.                 }
  455.             }
  456.         }
  457.     }
  458.     return 0;
  459. }
  460. //================================================================================================================
  461. //Player commands:
  462. COMMAND:in(playerid,params[])
  463. {
  464.     return SendClientMessageEx(playerid,gCOLOR_RED,"sf","Speed: ",GetVehicleSpeed(GetPlayerVehicleID(playerid),0));
  465. }
  466.  
  467. COMMAND:test(playerid,params[])
  468. {
  469.     return PutPlayerInVehicle(playerid,GetClosestVehicleForPlayer(playerid),0);
  470. }
  471.  
  472. COMMAND:reconnect(playerid,params[])
  473. {
  474.     SendClientMessage(playerid,gCOLOR_RED,"You will now be reconnected to the server, DO NOT LEAVE!");
  475.     SetPlayerToReconnect(playerid);
  476.     return 1;
  477. }
  478. COMMAND:changepassword(playerid,params[])
  479. {
  480.     new oldpass[129],newpass[129];
  481.     if(sscanf(params,"s[32]s[32]",oldpass,newpass)) return SendClientMessage(playerid,color_red,"USAGE: /changepassword [oldpassword] [newpassword]");
  482.     WP_Hash(oldpass,sizeof oldpass,oldpass);
  483.     if(strcmp(PlayerInfo[playerid][Password],oldpass)) return SendClientMessage(playerid,color_red,"ERROR! Your current password does not match with your entered password!");
  484.     #if USE_MYSQL_DATABASE == true
  485.         WP_Hash(PlayerInfo[playerid][Password],129,newpass);
  486.     #else
  487.         WP_Hash(PlayerInfo[playerid][Password],129,newpass);
  488.     #endif
  489.     SaveUser(playerid);
  490.     return SendClientMessage(playerid,color_green,"Your password has succesfully been changed.");
  491. }
  492. COMMAND:stats(playerid,params[])
  493. {
  494.     SendClientMessage(playerid,color_green,"Your current stats:");
  495.     SendClientMessageEx(playerid,color_yellow,"sis","Score: ",GetPlayerScore(playerid),".");
  496.     SendClientMessageEx(playerid,color_yellow,"sis","Money: ",GetPlayerMoney(playerid),".");
  497.     return 1;
  498. }
  499.  
  500. COMMAND:whois(playerid,params[])
  501. {
  502.     new id;
  503.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /whois [playerid]");
  504.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  505.     SendClientMessageEx(playerid,color_orange,"sis","Who is ID ",id,".");
  506.     SendClientMessageEx(playerid,color_yellow,"sss","Username: {FFFFFF}",PlayerInfo[id][Username],".");
  507.     switch(PlayerInfo[id][Level])
  508.     {
  509.         case 0:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Jogador.");
  510.         case 1:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Moderador.");
  511.         case 2:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Administrador.");
  512.         case 3:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Owner.");
  513.     }
  514.     SendClientMessageEx(playerid,color_yellow,"sis","Score: ",GetPlayerScore(id),".");
  515.     SendClientMessageEx(playerid,color_yellow,"sis","Money: ",GetPlayerMoney(id),".");
  516.     SendClientMessageEx(playerid,color_yellow,"sss","IP: ",GetPlayerIpEx(id),".");
  517.     return 1;
  518. }
  519.  
  520. COMMAND:whowas(playerid,params[])
  521. {
  522.     new pName[MAX_PLAYER_NAME];
  523.     if(sscanf(params,"s[32]",pName)) return SendClientMessage(playerid,color_red,"USAGE: /whowas [playername]");
  524.    
  525.     #if USE_MYSQL_DATABASE == true
  526.         new query[128];format(query,sizeof query,"SELECT * FROM users WHERE Username = '%s'",pName);
  527.         if(yoursql_countrows(query) != 1) return SendClientMessage(playerid,color_red,"User not found in our database!");
  528.         format(query,sizeof query,"Username = '%s'",pName);
  529.         sscanf(yoursql_receive("users",query),"p<|>e<s[32]s[129]iiiiis[32]>",TempInfo);
  530.     #else
  531.         new file[64];format(file,sizeof file,"Users/%s.ini",pName);
  532.         if(!fexist(file)) return SendClientMessage(playerid,color_red,"User not found in our database!");
  533.         INI_ParseFile(file, "YINI_TEMPLOAD", .bExtra = true, .extra = playerid);
  534.     #endif
  535.    
  536.     SendClientMessageEx(playerid,color_orange,"sss","Who was ",pName,".");
  537.     SendClientMessageEx(playerid,color_yellow,"sss","Username: {FFFFFF}",TempInfo[Username],".");
  538.     switch(TempInfo[Level])
  539.     {
  540.         case 0:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Jogador.");
  541.         case 1:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Moderador.");
  542.         case 2:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Administrador.");
  543.         case 3:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Owner.");
  544.     }
  545.     SendClientMessageEx(playerid,color_yellow,"sis","Score: ",TempInfo[Score],".");
  546.     SendClientMessageEx(playerid,color_yellow,"sis","Money: ",TempInfo[Money],".");
  547.     SendClientMessageEx(playerid,color_yellow,"sss","IP: ",TempInfo[Ip],".");
  548.     format(TempInfo[Username],32," ");
  549.     format(TempInfo[Password],192," ");
  550.     format(TempInfo[Muted],32," ");
  551.     format(TempInfo[Jailed],32," ");
  552.     format(TempInfo[Score],32," ");
  553.     format(TempInfo[Money],32," ");
  554.     format(TempInfo[Level],32," ");
  555.     format(TempInfo[Ip],32," ");
  556.     return 1;
  557. }
  558. forward YINI_TEMPLOAD(playerid,Name[],Value[]);
  559. public YINI_TEMPLOAD(playerid,Name[],Value[])
  560. {
  561.     if(!strcmp(Name,"Username")){format(TempInfo[Username],32,"%s",Value);}
  562.     if(!strcmp(Name,"Score")){TempInfo[Score] = strval(Value);}
  563.     if(!strcmp(Name,"Money")){TempInfo[Money] = strval(Value);}
  564.     if(!strcmp(Name,"Level")){TempInfo[Level] = strval(Value);}
  565.     if(!strcmp(Name,"Ip")){format(TempInfo[Ip],32,"%s",Value);}
  566.     return 1;
  567. }
  568.  
  569. COMMAND:report(playerid,params[])
  570. {
  571.     new id,reason[64];
  572.     if(sscanf(params,"is[64]",id,reason)) return SendClientMessage(playerid,color_red,"USAGE: /report [playerid] [reason]");
  573.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  574.     new counter = 0;for(new i = 0;i<MAX_PLAYERS;i++)
  575.     {
  576.         if(!IsPlayerConnected(i)) continue;
  577.         if(PlayerInfo[i][Level] > 0)
  578.         {
  579.             SendClientMessageEx(i,color_orange,"sssisssisss","Incomming report from ",PlayerInfo[playerid][Username],"(",playerid,") Reporting ",PlayerInfo[id][Username],"(",id,"), Reason: ",reason,".");
  580.             counter++;
  581.         }
  582.     }
  583.     printf("%s has reported %s (Reason:%s)",PlayerInfo[playerid][Username],PlayerInfo[id][Username],reason);
  584.     return SendClientMessageEx(playerid,color_orange,"sis","O teu report foi enviado a todos os administradores (",counter," de momento).");
  585. }
  586. COMMAND:admins(playerid,params[])
  587. {
  588.     #if ALLOW_ADMINS == false
  589.         return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  590.     #else
  591.         new counter = 0;
  592.         SendClientMessage(playerid,color_green,"Administradores online:");
  593.         for(new i = 0;i<MAX_PLAYERS;i++)
  594.         {
  595.             if(!IsPlayerConnected(i)) continue;
  596.             if(PlayerInfo[i][Level] > 0)
  597.             {
  598.                 SendClientMessageEx(playerid,color_orange,"s",PlayerInfo[i][Username]);
  599.                 counter++;
  600.             }
  601.         }
  602.         if(counter == 0)
  603.         {
  604.             SendClientMessage(playerid,color_red,"Não há administradores online!");
  605.         }
  606.         return 1;
  607.     #endif
  608. }
  609.  
  610. COMMAND:acmds(playerid,params[])
  611. {
  612.     if(PlayerInfo[playerid][Level] == 0) return SendClientMessage(playerid,color_red,"Não tens permissão para executares esse comando!");
  613.     SendClientMessage(playerid,color_orange,"Moderador (Level 1 and up):");
  614.     SendClientMessage(playerid,color_yellow,"/a /countdown /whois /announce /spectate /disarm /(un)mute /(un)freeze /(un)jail /kick");
  615.     SendClientMessage(playerid,color_orange,"Administrador (Level 2 and up):");
  616.     SendClientMessage(playerid,color_yellow,"/veh /get /goto /giveweapon /setmoney /setscore /explode /ban /banip /annoy");
  617.     SendClientMessage(playerid,color_orange,"Owner (Level 3):");
  618.     SendClientMessage(playerid,color_yellow,"/setlevel /unbanip");
  619.     return 1;
  620. }
  621.  
  622. //================================================================================================================
  623. //Moderator commands
  624. COMMAND:a(playerid,params[])
  625. {
  626.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"Não tens permissão para executares esse comando!");
  627.     new text[128];
  628.     if(sscanf(params,"s[128]",text)) return SendClientMessage(playerid,color_red,"[USO]: /a [texto]");
  629.     for(new i = 0;i<MAX_PLAYERS;i++)
  630.     {
  631.         if(!IsPlayerConnected(i)) continue;
  632.         if(PlayerInfo[i][Level] < 1) continue;
  633.         SendClientMessageEx(i,color_yellow,"ssss","Adminchat: ",PlayerInfo[playerid][Username],": {FFFFFF}",text);
  634.     }
  635.     return 1;
  636. }
  637.  
  638. COMMAND:countdown(playerid,params[])
  639. {
  640.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  641.     if(CountDownInProgress == true) return SendClientMessage(playerid,color_red,"There is already a countdown in progress!");
  642.     CountDownInProgress = true;
  643.     SetTimer("countdown",1000,false);
  644.     SendClientMessageToAllEx(color_red,"sss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} has started a countdown!");
  645.     return 1;
  646. }
  647. forward countdown();
  648. public countdown()
  649. {
  650.     if(countdown_counter == 0){countdown_counter = 5;CountDownInProgress = false;return GameTextForAll("GO GO GO!",1000,6);}
  651.     new str[32];format(str,sizeof str,"~g~%i",countdown_counter);
  652.     GameTextForAll(str,1000,6);
  653.     countdown_counter--;
  654.     return SetTimer("countdown",1000,false);
  655. }
  656.  
  657.  
  658. COMMAND:announce(playerid,params[])
  659. {
  660.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  661.     new msg[128];
  662.     if(sscanf(params,"s",msg)) return SendClientMessage(playerid,color_red,"USAGE: /announce [text]");
  663.     SendClientMessageToAllEx(color_yellow,"ss","ANNOUNCEMENT: ",msg);
  664.     return GameTextForAll(msg,5000,4);
  665. }
  666. COMMAND:spectate(playerid,params[])
  667. {
  668.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  669.     new id;
  670.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /spectate [id]");
  671.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  672.     if(id == playerid) return SendClientMessage(playerid,color_red,"You cannot spectate yourself!");
  673.     if(GetPVarInt(playerid,"spectating") == 1) return SendClientMessage(playerid,color_red,"You are already spectating! Please use /stop to turn spectatemode off.");
  674.     TogglePlayerSpectating(playerid,1);
  675.     SetPVarInt(playerid,"spectating",1);
  676.     if(IsPlayerInAnyVehicle(id))
  677.     {
  678.         SetPVarInt(playerid,"state",1);
  679.         PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
  680.     } else {
  681.         SetPVarInt(playerid,"state",0);
  682.         PlayerSpectatePlayer(playerid,id);
  683.     }
  684.     UpdateSpectateTimer[playerid] = SetTimerEx("UpdateAdminSpectate",1000,true,"ii",playerid,id);
  685.     return SendClientMessageEx(playerid,color_green,"sss","You are now spectating ",PlayerInfo[id][Username]," . You can use /stop to switch back to normal mode.");
  686. }
  687. forward UpdateAdminSpectate(playerid,id);
  688. public UpdateAdminSpectate(playerid,id)
  689. {
  690.     if(GetPVarInt(playerid,"state") == 1 && !IsPlayerInAnyVehicle(id))
  691.     {
  692.         PlayerSpectatePlayer(playerid,id);
  693.         SetPVarInt(playerid,"state",0);
  694.     } else if (GetPVarInt(playerid,"state") == 0 && IsPlayerInAnyVehicle(id)) {
  695.         PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
  696.         SetPVarInt(playerid,"state",1);
  697.     }
  698. }
  699.  
  700. COMMAND:stop(playerid,params[])
  701. {
  702.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  703.     if(GetPVarInt(playerid,"spectating") == 0) return SendClientMessage(playerid,color_red,"You are not spectating a player! use /spectate [ID] to spectate a player.");
  704.     TogglePlayerSpectating(playerid,0);
  705.     SetPVarInt(playerid,"spectating",0);
  706.     KillTimer(UpdateSpectateTimer[playerid]);
  707.     return 1;
  708. }
  709.  
  710. COMMAND:disarm(playerid,params[])
  711. {
  712.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  713.     new id;
  714.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /disarm [playerid]");
  715.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  716.     ResetPlayerWeapons(id);
  717.     SendClientMessageToAllEx(color_red,"ssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} disarmed ",PlayerInfo[id][Username],".");
  718.     return 1;
  719. }
  720.  
  721. COMMAND:mute(playerid,params[])
  722. {
  723.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  724.     new id,reason[64];
  725.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /mute [id] [reason]");
  726.     sscanf(params,"is[64]",id,reason);
  727.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  728.     if(PlayerInfo[id][Muted] == 1) return SendClientMessage(playerid,color_red,"Player is already muted!");
  729.     if(!strlen(reason))
  730.     {
  731.         SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} muted ",PlayerInfo[id][Username],".");
  732.     } else {
  733.         SendClientMessageToAllEx(color_red,"sssssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} muted ",PlayerInfo[id][Username]," Reason:",reason,".");
  734.     }
  735.     PlayerInfo[id][Muted] = 1;
  736.     MutePlayer(id);
  737.     return 1;
  738. }
  739. COMMAND:unmute(playerid,params[])
  740. {
  741.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  742.     new id;
  743.     if(sscanf(params,"i",id))return SendClientMessage(playerid,color_red,"USAGE: /unmute [id]");
  744.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  745.     if(PlayerInfo[id][Muted] == 0) return SendClientMessage(playerid,color_red,"Player is not muted!");
  746.     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} unmuted ",PlayerInfo[id][Username],".");
  747.     PlayerInfo[id][Muted] = 0;
  748.     UnMutePlayer(playerid);
  749.     return 1;
  750. }
  751.  
  752. COMMAND:freeze(playerid,params[])
  753. {
  754.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  755.     new id,reason[64];
  756.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /freeze [id] [reason]");
  757.     sscanf(params,"is[64]",id,reason);
  758.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  759.     if(!strlen(reason))
  760.     {
  761.         SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} froze ",PlayerInfo[id][Username],".");
  762.     } else {
  763.         SendClientMessageToAllEx(color_red,"sssssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} froze ",PlayerInfo[id][Username]," Reason:",reason,".");
  764.     }
  765.     TogglePlayerControllable(id,0);
  766.     return 1;
  767. }
  768. COMMAND:unfreeze(playerid,params[])
  769. {
  770.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  771.     new id;
  772.     if(sscanf(params,"i",id))return SendClientMessage(playerid,color_red,"USAGE: /unfreeze [id]");
  773.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  774.     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} unfroze ",PlayerInfo[id][Username],".");
  775.     TogglePlayerControllable(id,1);
  776.     return 1;
  777. }
  778.  
  779. COMMAND:jail(playerid,params[])
  780. {
  781.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  782.     new id,reason[64];
  783.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /jail [id] [reason]");
  784.     sscanf(params,"is[64]",id,reason);
  785.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  786.     if(!strlen(reason))
  787.     {
  788.         SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} jailed ",PlayerInfo[id][Username],".");
  789.     } else {
  790.         SendClientMessageToAllEx(color_red,"sssssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} jailed ",PlayerInfo[id][Username]," Reason:",reason,".");
  791.     }
  792.     PlayerInfo[id][Jailed] = 1;
  793.     JailPlayer(id);
  794.     return 1;
  795. }
  796. COMMAND:unjail(playerid,params[])
  797. {
  798.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  799.     new id;
  800.     if(sscanf(params,"i",id))return SendClientMessage(playerid,color_red,"USAGE: /unjail [id]");
  801.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  802.     if(PlayerInfo[id][Jailed] == 0) return SendClientMessage(playerid,color_red,"Player is not jailed!");
  803.     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} unjailed ",PlayerInfo[id][Username],".");
  804.     PlayerInfo[id][Jailed] = 0;
  805.     UnJailPlayer(id);
  806.     return 1;
  807. }
  808.  
  809. COMMAND:kick(playerid,params[])
  810. {
  811.     if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  812.     new id,reason[64];
  813.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /kick [id] [reason]");
  814.     sscanf(params,"is[64]",id,reason);
  815.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  816.     if(!strlen(reason))
  817.     {
  818.         SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} kicked ",PlayerInfo[id][Username],".");
  819.     } else {
  820.         SendClientMessageToAllEx(color_red,"sssssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} kicked ",PlayerInfo[id][Username]," Reason:",reason,".");
  821.     }
  822.     return Kick(id);
  823. }
  824.  
  825. //================================================================================================================
  826. //Administrator commands
  827. COMMAND:veh(playerid,params[])
  828. {
  829.     #if ALLOW_VEH == false
  830.         return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  831.     #else
  832.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  833.     new vehicle[32],c1 = -1,c2 = -1;
  834.     if(sscanf(params,"s[24]",vehicle)) return SendClientMessage(playerid,color_red,"USAGE: /veh [vehiclename] [color1] [color2]");
  835.     sscanf(params,"s[24]ii",vehicle,c1,c2);
  836.     new model = GetVehicleModelIdByName(vehicle);
  837.     if(model == 0) return  SendClientMessage(playerid,color_red,"Sorry! Cannot find a vehicle with your entered vehiclename.");
  838.     new Float:x,Float:y,Float:z;
  839.     GetPlayerPos(playerid,x,y,z);
  840.     CreateVehicle(model,x+5,y,z,0,c1,c2,-1);
  841.     SendClientMessageEx(playerid,color_orange,"sss","You succesfully spawned a ",vehicle," !");
  842.     printf("%s has spawned a %s.",PlayerInfo[playerid][Username],vehicle);
  843.     return 1;
  844.     #endif
  845. }
  846.  
  847. COMMAND:get(playerid,params[])
  848. {
  849.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  850.     new id;
  851.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /get [playerid]");
  852.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  853.     new Float:x,Float:y,Float:z;GetPlayerPos(playerid,x,y,z);x = x +2;
  854.     SetPlayerPos(id,x,y,z);
  855.     SendClientMessageEx(playerid,color_green,"sss","You have teleported ",PlayerInfo[id][Username]," to your position!");
  856.     SendClientMessageEx(id,color_green,"sss","Administrador ",PlayerInfo[playerid][Username]," has teleported you to his position!");
  857.     return 1;
  858. }
  859. COMMAND:goto(playerid,params[])
  860. {
  861.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  862.     new id;
  863.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /goto [playerid]");
  864.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  865.     new Float:x,Float:y,Float:z;GetPlayerPos(id,x,y,z);x = x +2;
  866.     SetPlayerPos(playerid,x,y,z);
  867.     SendClientMessageEx(playerid,color_green,"sss","You have teleported to ",PlayerInfo[id][Username],"'s position!");
  868.     return 1;
  869. }
  870.  
  871. COMMAND:giveweapon(playerid,params[])
  872. {
  873.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  874.     new id,weapon[32],ammo;
  875.     if(sscanf(params,"is[32]i",id,weapon,ammo)) return SendClientMessage(playerid,color_red,"USAGE: /giveweapon [playerid] [weaponname] [ammo]");
  876.     new wid = GetWeaponIdByName(weapon);
  877.     if(wid == -1) return SendClientMessage(playerid,color_red,"Invalid weapon name!");
  878.     GivePlayerWeapon(id,wid,ammo);
  879.     SendClientMessageEx(id,color_green,"sssss","Administrador ",PlayerInfo[playerid][Username]," gave you a ",weapon,"!");
  880.     SendClientMessageEx(playerid,color_green,"sssss","You have given ",PlayerInfo[id][Username]," a ",weapon,".");
  881.     return 1;
  882. }
  883.  
  884. COMMAND:setmoney(playerid,params[])
  885. {
  886.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  887.     new id,value;
  888.     if(sscanf(params,"ii",id,value)) return SendClientMessage(playerid,color_red,"USAGE: /setmoney [playerid] [value]");
  889.     SetPlayerMoney(id,value);
  890.     SendClientMessageEx(id,color_green,"sssis","Administrador ",PlayerInfo[playerid][Username]," has changed your money to ",value," !");
  891.     SendClientMessageEx(playerid,color_green,"sssis","You have succesfully changed ",PlayerInfo[id][Username],"'s money to ",value," .");
  892.     return 1;
  893. }
  894.  
  895. COMMAND:setscore(playerid,params[])
  896. {
  897.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  898.     new id,value;
  899.     if(sscanf(params,"ii",id,value)) return SendClientMessage(playerid,color_red,"USAGE: /setscore [playerid] [value]");
  900.     SetPlayerScore(id,value);
  901.     SendClientMessageEx(id,color_green,"sssis","Administrador ",PlayerInfo[playerid][Username]," has changed your score to ",value," !");
  902.     SendClientMessageEx(playerid,color_green,"sssis","You have succesfully changed ",PlayerInfo[id][Username],"'s score to ",value," .");
  903.     return 1;
  904. }
  905.  
  906. COMMAND:explode(playerid,params[])
  907. {
  908.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  909.     new id;
  910.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /explode [playerid]");
  911.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  912.     new Float:x,Float:y,Float:z;GetPlayerPos(id,x,y,z);
  913.     CreateExplosion(x,y,z,0,5);
  914.     CreateExplosion(x,y+3,z,0,7);
  915.     CreateExplosion(x+3,y,z,0,8);
  916.     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} made ",PlayerInfo[id][Username]," go boom!");
  917.     return 1;
  918. }
  919.  
  920. COMMAND:ban(playerid,params[])
  921. {
  922.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  923.     new id,reason[64];
  924.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /ban [id] [reason]");
  925.     sscanf(params,"is[64]",id,reason);
  926.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  927.     if(!strlen(reason))
  928.     {
  929.         SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} banned ",PlayerInfo[id][Username],".");
  930.     } else {
  931.         SendClientMessageToAllEx(color_red,"sssssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} banned ",PlayerInfo[id][Username]," Reason:",reason,".");
  932.     }
  933.     return Ban(id);
  934. }
  935.  
  936. COMMAND:banip(playerid,params[])
  937. {
  938.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  939.     new ip[32];if(sscanf(params,"s[32]",ip)) return SendClientMessage(playerid,color_red,"USAGE: /banip [ip]");
  940.     new str[64];format(str,sizeof str,"banip %s",ip);
  941.     SendRconCommand(str);
  942.     SendClientMessageEx(playerid,color_green,"sss","You have succesfully banned ",ip," !");
  943.     printf("%s has banned %s.",PlayerInfo[playerid][Username],ip);
  944.     return 1;
  945. }
  946.  
  947. COMMAND:annoy(playerid,params[])
  948. {
  949.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  950.     new id;
  951.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /annoy [playerid]");
  952.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  953.     if(cow_victim != -1) return SendClientMessage(playerid,color_red,"Sorry! It seems like your cow has already been stolen by another Administrador.");
  954.     #if ALLOW_ANNOY == false
  955.         return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  956.     #else
  957.     AnnoyPlayer(id);
  958.     SendClientMessageToAllEx(color_red,"sssss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} has released his cow on ",PlayerInfo[id][Username]," !!!");
  959.     SendClientMessageEx(playerid,color_green,"sss","You have released your cow on ",PlayerInfo[id][Username],"! please use /catchcow to bring him back.");
  960.     return 1;
  961.     #endif
  962. }
  963. COMMAND:catchcow(playerid,params[])
  964. {
  965.     if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  966.     if(cow_victim == -1) return SendClientMessage(playerid,color_red,"You cannot catch the cow if it isnt released yet!");
  967.     StopAnnoying();
  968.     SendClientMessageToAllEx(color_red,"sss","***Administrador ",PlayerInfo[playerid][Username],"{FFFFFF} has brought his cow back to the farm!");
  969.     return 1;
  970. }
  971.  
  972. //================================================================================================================
  973. //Server owner commands
  974. COMMAND:setlevel(playerid,params[])
  975. {
  976.     if(PlayerInfo[playerid][Level] < 3&& !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  977.     new id,level;if(sscanf(params,"ii",id,level)) return SendClientMessage(playerid,color_red,"USAGE: /setlevel [playerid] [level 0/3]");
  978.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  979.     if(level > 3) return SendClientMessage(playerid,color_red,"Error! You can only pick between level 0/3 (0: Player - 1: Moderator - 2: Administrator - 3: Owner)");
  980.     if(PlayerInfo[id][Level] < level)
  981.     {
  982.         PlayerInfo[id][Level] = level;
  983.         SendClientMessageEx(playerid,color_green,"sssis","You have promoted ",PlayerInfo[id][Username]," succesfully to level ",level,".");
  984.         SendClientMessageEx(id,color_green,"sis","Congratulations! You have been promoted to level ",level,".");
  985.     } else {
  986.         PlayerInfo[id][Level] = level;
  987.         SendClientMessageEx(playerid,color_green,"sssis","You have demoted ",PlayerInfo[id][Username]," succesfully to level ",level,".");
  988.         SendClientMessageEx(id,color_green,"sis","You have been demoted to level ",level,".");
  989.     }
  990.     SaveUser(id);
  991.     return 1;
  992. }
  993.  
  994. COMMAND:unbanip(playerid,params[])
  995. {
  996.     if(PlayerInfo[playerid][Level] < 3 ) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  997.     new ip[32];if(sscanf(params,"s[32]",ip)) return SendClientMessage(playerid,color_red,"USAGE: /unbanip [ip]");
  998.     new str[64];format(str,sizeof str,"unbanip %s",ip);
  999.     SendRconCommand(str);
  1000.     SendClientMessageEx(playerid,color_green,"sss","You have succesfully unbanned ",ip," !");
  1001.     printf("%s has unbanned %s.",PlayerInfo[playerid][Username],ip);
  1002.     return 1;
  1003. }
  1004.  
  1005. //================================================================================================================
  1006. //stocks for admin script
  1007. stock OnPlayerRegister(playerid,password[])
  1008. {
  1009.     GetPlayerName(playerid,PlayerInfo[playerid][Username],MAX_PLAYER_NAME);
  1010.     WP_Hash(PlayerInfo[playerid][Password],129,password);
  1011.     PlayerInfo[playerid][Muted] = 0;
  1012.     PlayerInfo[playerid][Score] = GetPlayerScore(playerid);
  1013.     PlayerInfo[playerid][Money] = GetPlayerMoney(playerid);
  1014.     PlayerInfo[playerid][Level] = 0;
  1015.     format(PlayerInfo[playerid][Ip],32,"%s",GetPlayerIpEx(playerid));
  1016.     #if USE_MYSQL_DATABASE == true
  1017.         yoursql_insert("users","ssiiiiis",yoursql_escape_string(PlayerInfo[playerid][Username]),PlayerInfo[playerid][Password],PlayerInfo[playerid][Muted],PlayerInfo[playerid][Jailed],PlayerInfo[playerid][Score],PlayerInfo[playerid][Money],PlayerInfo[playerid][Level],PlayerInfo[playerid][Ip]);
  1018.     #else
  1019.         new string[128];format(string,sizeof string,"Users/%s.ini",PlayerInfo[playerid][Username]);
  1020.         new INI:handler = INI_Open(string);
  1021.         INI_WriteString(handler,"Username",PlayerInfo[playerid][Username]);
  1022.         INI_WriteString(handler,"Password",PlayerInfo[playerid][Password]);
  1023.         INI_WriteInt(handler,"Muted",PlayerInfo[playerid][Muted]);
  1024.         INI_WriteInt(handler,"Jailed",PlayerInfo[playerid][Jailed]);
  1025.         INI_WriteInt(handler,"Score",GetPlayerScore(playerid));
  1026.         INI_WriteInt(handler,"Money",GetPlayerMoney(playerid));
  1027.         INI_WriteInt(handler,"Level",0);
  1028.         INI_WriteString(handler,"Ip",GetPlayerIpEx(playerid));
  1029.         INI_Close(handler);
  1030.     #endif
  1031.     printf("%s has registered an account.",PlayerInfo[playerid][Username]);
  1032.     SendClientMessageToAllEx(color_green,"ss",PlayerInfo[playerid][Username]," has registered an account, welcome!");
  1033. }
  1034.  
  1035. stock LoadUser(playerid,pName[])
  1036. {
  1037.     new identifier[64];
  1038.     #if USE_MYSQL_DATABASE == true
  1039.         format(identifier,sizeof identifier,"Username = '%s'",pName);
  1040.         sscanf(yoursql_receive("users",identifier),"p<|>e<s[32]s[129]iiiiis[12]>",PlayerInfo[playerid]);
  1041.     #else
  1042.         format(identifier,sizeof identifier,"Users/%s.ini",pName);
  1043.         INI_ParseFile(identifier, "YINI_LOAD", .bExtra = true, .extra = playerid);
  1044.     #endif
  1045.     SetPlayerScore(playerid,PlayerInfo[playerid][Score]);
  1046.     SetPlayerMoney(playerid,PlayerInfo[playerid][Money]);
  1047.     return 1;
  1048. }
  1049.  
  1050. forward YINI_LOAD(playerid,Name[],Value[]);
  1051. public YINI_LOAD(playerid,Name[],Value[])
  1052. {
  1053.     if(!strcmp(Name,"Username")){format(PlayerInfo[playerid][Username],32,"%s",Value);}
  1054.     if(!strcmp(Name,"Password")){format(PlayerInfo[playerid][Password],129,"%s",Value);}
  1055.     if(!strcmp(Name,"Muted")){PlayerInfo[playerid][Muted] = strval(Value);}
  1056.     if(!strcmp(Name,"Jailed")){PlayerInfo[playerid][Jailed] = strval(Value);}
  1057.     if(!strcmp(Name,"Score")){PlayerInfo[playerid][Score] = strval(Value);}
  1058.     if(!strcmp(Name,"Money")){PlayerInfo[playerid][Money] = strval(Value);}
  1059.     if(!strcmp(Name,"Level")){PlayerInfo[playerid][Level] = strval(Value);}
  1060.     if(!strcmp(Name,"Ip")){format(PlayerInfo[playerid][Ip],32,"%s",Value);}
  1061.     return 1;
  1062. }
  1063.  
  1064. stock SaveUser(playerid)
  1065. {
  1066.     new string[320];
  1067.     #if USE_MYSQL_DATABASE == true
  1068.         format(string,sizeof string,"password = '%s', muted = %i, jailed = %i, score = %i, money = %i, level = %i, Ip = '%s'",yoursql_escape_string(PlayerInfo[playerid][Password]),PlayerInfo[playerid][Muted],PlayerInfo[playerid][Jailed],GetPlayerScore(playerid),GetPlayerMoney(playerid),PlayerInfo[playerid][Level],GetPlayerIpEx(playerid));
  1069.         new identifier[32];format(identifier,sizeof identifier,"Username = '%s'",PlayerInfo[playerid][Username]);
  1070.         yoursql_update("users",string,identifier);
  1071.     #else
  1072.         format(string,sizeof string,"Users/%s.ini",PlayerInfo[playerid][Username]);
  1073.         new INI:handler = INI_Open(string);
  1074.         INI_WriteString(handler,"Password",PlayerInfo[playerid][Password]);
  1075.         INI_WriteInt(handler,"Muted",PlayerInfo[playerid][Muted]);
  1076.         INI_WriteInt(handler,"Jailed",PlayerInfo[playerid][Jailed]);
  1077.         INI_WriteInt(handler,"Score",GetPlayerScore(playerid));
  1078.         INI_WriteInt(handler,"Money",GetPlayerMoney(playerid));
  1079.         INI_WriteInt(handler,"Level",PlayerInfo[playerid][Level]);
  1080.         INI_Close(handler);
  1081.     #endif
  1082. }
  1083. //================================================================================================================
  1084. //Parts from Hiddos's annoying cow script
  1085.  
  1086. stock AnnoyPlayer(playerid)
  1087. {
  1088.     object_cow = CreateObject(16442, 0, 0, 0, 0, 0, 0);
  1089.     cow_victim = playerid;
  1090.     new Float:Pos[4];
  1091.     if(IsPlayerInAnyVehicle(cow_victim)) GetVehiclePos(GetPlayerVehicleID(cow_victim), Pos[0], Pos[1], Pos[2]);
  1092.     else GetPlayerPos(cow_victim, Pos[0], Pos[1], Pos[2]);
  1093.     Pos[0] += float(random(30) - 15);
  1094.     Pos[1] += float(random(30) - 15);
  1095.     StopObject(object_cow);
  1096.     SetObjectPos(object_cow, Pos[0], Pos[1], Pos[2] - 7.5);
  1097.     MoveObject(object_cow, Pos[0], Pos[1], Pos[2], 5.0);
  1098.     movecow_timer = SetTimer("MoveCow", 2000, true);
  1099. }
  1100. stock StopAnnoying()
  1101. {
  1102.     KillTimer(movecow_timer);
  1103.     DestroyObject(object_cow); //Bai bai cow :(
  1104.     cow_victim = -1;
  1105. }
  1106. stock Float:GetPlayerSpeed(playerid)
  1107. {
  1108.         new Float:x,Float:y,Float:z;
  1109.         if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
  1110.         else GetPlayerVelocity(playerid,x,y,z);
  1111.         return floatsqroot(x*x+y*y+z*z) * 48.5;
  1112. }
  1113. forward MoveCow();
  1114. public MoveCow()
  1115. {
  1116.     if(cow_victim == -1) return;
  1117.     new Float:Pos[7];
  1118.     GetObjectPos(object_cow, Pos[0], Pos[1], Pos[2]);
  1119.     if(IsPlayerInAnyVehicle(cow_victim)) GetVehiclePos(GetPlayerVehicleID(cow_victim), Pos[3], Pos[4], Pos[5]);
  1120.     else GetPlayerPos(cow_victim, Pos[3], Pos[4], Pos[5]);
  1121.     Pos[3] += float(random(10) - 5);
  1122.     Pos[4] += float(random(10) - 5);
  1123.     Pos[6] = atan( floatdiv(abs(Pos[4] - Pos[1]), abs(Pos[3] - Pos[0])) );
  1124.  
  1125.     if(Pos[3] < Pos[0] && Pos[4] < Pos[1])  Pos[6] += 180;
  1126.     else if(!(Pos[3] > Pos[0] && Pos[4] > Pos[1]))
  1127.     {
  1128.         Pos[6] *= float(-1);
  1129.         Pos[6] += float((Pos[3] > Pos[0] && Pos[4] < Pos[1]) ? (90) : (270));
  1130.         Pos[6] -= float(90);
  1131.     }
  1132.     SetObjectRot(object_cow, 0, 0, Pos[6]);
  1133.     MoveObject(object_cow, Pos[3], Pos[4], Pos[5] + 1.2, GetPlayerSpeed(cow_victim) + 7.8);
  1134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement