26.01.2015, 16:14
So I added sscanf plugin and inc,
but now when I am ingame, the commands don't work.
this is my script
but now when I am ingame, the commands don't work.
this is my script
Код:
#include <a_samp> #include <foreach> #include <YSI\y_ini> #include <zcmd> #include <sscanf2> //Colors #define COLOR_BLACK "{000000}" #define COLOR_WHITE "{FFFFFF}" #define COLOR_GREEN "{00FF00}" #define COLOR_RED "{FF0000}" #define COLOR_BLUE "{0000FF}" #define COLOR_YELLOW "{FFFF00}" #define COLOR_ORANGE "{FFBB00}" #define COLOR_PURPLE "{FF00FF}" #define COLOR_GREY "{AFAFAF}" #define COLOR_LIGHTBLUE "{0AFFFF}" #define COL_BLACK 0x000000AA #define COL_WHITE 0xFFFFFFAA #define COL_GREEN 0x00FF00AA #define COL_RED 0xFF0000AA #define COL_BLUE 0x0000FFAA #define COL_YELLOW 0xFFFF00AA #define COL_ORANGE 0xFFBB00AA #define COL_PURPLE 0xFF00FFAA #define COL_GREY 0xAFAFAFAA #define COL_LIGHTBLUE 0x0AFFFFAA //Dialogs #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 #define DIALOG_SUCCESS_1 3 #define DIALOG_SUCCESS_2 4 //Users path #define PATH "/users/%s.ini" //#define COL_LIGHTBLUE "{485CFF}" new aVehicleNames[212][] = { {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"}, {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"}, {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"}, {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"}, {"Banshee"}, {"Predator"}, {"Bus"}, {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"}, {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"}, {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"Turismo"}, {"Speeder"}, {"Reefer"}, {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkley's RC Van"}, {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"}, {"Glendale"}, {"Oceanic"}, {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quad"}, {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"}, {"Rustler"}, {"ZR-350"}, {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"}, {"Marquis"}, {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"}, {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"}, {"Jetmax"}, {"Hotring"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"}, {"Boxville"}, {"Benson"}, {"Mesa"}, {"RC Goblin"}, {"Hotring Racer A"}, {"Hotring Racer B"}, {"Bloodring Banger"}, {"Rancher"}, {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"}, {"Beagle"}, {"Cropdust"}, {"Stunt"}, {"Tanker"}, {"Roadtrain"}, {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"}, {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Tow Truck"}, {"Fortune"}, {"Cadrona"}, {"FBI Truck"}, {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine"}, {"Feltzer"}, {"Remington"}, {"Slamvan"}, {"Blade"}, {"Freight"}, {"Streak"}, {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"}, {"Firetruck LA"}, {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"}, {"Merit"}, {"Utility"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster A"}, {"Monster B"}, {"Uranus"}, {"Jester"}, {"Sultan"}, {"Stratum"}, {"Elegy"}, {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"}, {"Bandito"}, {"Freight Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"}, {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"}, {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"}, {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car (LSPD)"}, {"Police Car (SFPD)"}, {"Police Car (LVPD)"}, {"Police Ranger"}, {"Picador"}, {"S.W.A.T. Van"}, {"Alpha"}, {"Phoenix"}, {"Glendale"}, {"Sadler"}, {"Luggage Trailer A"}, {"Luggage Trailer B"}, {"Stair Trailer"}, {"Boxville"}, {"Farm Plow"}, {"Utility Trailer"} }; //Information main() { print("Roleplaying script loaded!"); return 1; } public OnGameModeInit() { AddPlayerClass(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); DisableInteriorEnterExits(); print("Gamemode Started."); return 1; } //Public things ///Public things //Chat stock strreplace(string[], find, replace) { for(new i=0; string[i]; i++) { if(string[i] == find) { string[i] = replace; } } } stock GetName(playerid) { new name[24]; GetPlayerName(playerid, name, sizeof(name)); strreplace(name, '_', ' '); return name; } stock ProxDetector(Float:radi, playerid, string[],color) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); foreach(Player,i) { if(IsPlayerInRangeOfPoint(i,radi,x,y,z)) { SendClientMessage(i,color,string); } } } public OnPlayerText(playerid, text[]) { new message[128]; format(message, sizeof(message), "%s Says: %s", GetName(playerid), text); ProxDetector(30.0, playerid, message, -1); return 0; } ///Chat //Login enum pInfo { pPass, pRights, pLevel, pCash, pSkin, pKills, pDeaths, pHouse } new PlayerInfo[MAX_PLAYERS][pInfo]; forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Int("Password",PlayerInfo[playerid][pPass]); INI_Int("Rights",PlayerInfo[playerid][pRights]); INI_Int("Level",PlayerInfo[playerid][pLevel]); INI_Int("Cash",PlayerInfo[playerid][pCash]); INI_Int("Skin",PlayerInfo[playerid][pSkin]); INI_Int("Kills",PlayerInfo[playerid][pKills]); INI_Int("Deaths",PlayerInfo[playerid][pDeaths]); INI_Int("House",PlayerInfo[playerid][pHouse]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } stock udb_hash(buf[]) { new length=strlen(buf); new s1 = 1; new s2 = 0; new n; for (n=0; n<length; n++) { s1 = (s1 + buf[n]) % 65521; s2 = (s2 + s1) % 65521; } return (s2 << 16) + s1; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); new string[128], playerName[24]; GetPlayerName(playerid, playerName, sizeof(playerName)); format(string, sizeof(string), ""COLOR_YELLOW"Welcome back "COLOR_LIGHTBLUE"%s "COLOR_WHITE"\nplease type your password below to log in.", GetName(playerid)); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, COLOR_WHITE"Login", string, "Login", "Quit"); } else { new string[128], playerName[24]; GetPlayerName(playerid, playerName, sizeof(playerName)); format(string, 128, COLOR_YELLOW"Welcome "COLOR_LIGHTBLUE"%s "COLOR_WHITE"\n Type your password below to register a new account.", GetName(playerid)); ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, COLOR_WHITE"Registering...", string, "Register", "Quit"); } return 1; } public OnPlayerSpawn(playerid) { PlayerInfo[playerid][pSkin] = GetPlayerSkin(playerid); //i dont know your variables SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch( dialogid ) { case DIALOG_REGISTER: { if (!response) return Kick(playerid); if(response) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, ""COLOR_WHITE"Registering...",""COLOR_RED"You have entered an invalid password.\n"COLOR_WHITE"Type your password below to register a new account.","Register","Quit"); new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteInt(File,"Password",udb_hash(inputtext)); INI_WriteInt(File,"Rights",0); INI_WriteInt(File,"Cash",0); INI_WriteInt(File,"Level",0); INI_WriteInt(File,"Skin",79); INI_WriteInt(File,"Kills",0); INI_WriteInt(File,"Deaths",0); INI_WriteInt(File,"House",0); INI_Close(File); SetSpawnInfo(playerid, 0, 79, 1549.6141, -1675.5640, 15.0438, 91.6558, 0, 0, 0, 0, 0, 0); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); SpawnPlayer(playerid); } } case DIALOG_LOGIN: { if ( !response ) return Kick ( playerid ); if( response ) { if(udb_hash(inputtext) == PlayerInfo[playerid][pPass]) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]); SetSpawnInfo(playerid, 0, 79, 1549.6141, -1675.5640, 15.0438, 91.6558, 0, 0, 0, 0, 0, 0); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); SpawnPlayer(playerid); } else { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COLOR_WHITE"Login",""COLOR_RED"You have entered an incorrect password.\n"COLOR_WHITE"Type your password below to login.","Login","Quit"); } return 1; } } } return 1; } public OnPlayerDisconnect(playerid, reason) { new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteInt(File,"Rights",PlayerInfo[playerid][pRights]); INI_WriteInt(File,"Cash",GetPlayerMoney(playerid)); INI_WriteInt(File,"Level",GetPlayerScore(playerid)); INI_WriteInt(File,"Skin",GetPlayerSkin(playerid)); INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]); INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]); INI_WriteInt(File,"House",PlayerInfo[playerid][pHouse]); INI_Close(File); return 1; } public OnPlayerDeath(playerid, killerid, reason) { PlayerInfo[killerid][pKills]++; PlayerInfo[playerid][pDeaths]++; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); SetSpawnInfo(playerid, 0, 79, 1549.6141, -1675.5640, 15.0438, 91.6558, 0, 0, 0, 0, 0, 0); SpawnPlayer(playerid); return 1; } ///Login //Commands public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/help", true)) { SendClientMessage(playerid, 0xFFFFFFFF, "Vehicle"); SendClientMessage(playerid, 0xFFFFFFFF, "Use it like /help vehicle"); return 1; } /*CMD:help(playerid, params) { SendClientMessage(playerid, 0xFFFFFFFF, "Vehicle"); SendClientMessage(playerid, 0xFFFFFFFF, "Use it like /help vehicle"); return 1; }*/ if(!strcmp(cmdtext, "/help Vehicle", true)) { SendClientMessage(playerid, 0xFFFFFFFF, "e"); return 1; } /*CMD:help vehicle(playerid, params) { SendClientMessage(playerid, 0xFFFFFFFF, "e"); return 1; }*/ if(!strcmp(cmdtext, "/e", true)) { return 1; } /*CMD:e(playerid, params) { return 1; }*/ if(!strcmp(cmdtext, "/me", true, 3)) { if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new message[128]; format(message, sizeof(message), "> %s %s", GetName(playerid), cmdtext[4]); // SendClientMessageToAll(0xC2A2DAAA, str); ProxDetector(30.0, playerid, message, 0xC2A2DAAA); return 1; } /*CMD:me(playerid, params) { if(!cmdtext[3]) return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new message[128]; format(message, sizeof(mesage), "> %s %s", GetName(playerid), cmdtext[4]); ProxDetector(30.0, playerid, message, 0xC2A2DAAA); return 1; }*/ if(!strcmp(cmdtext, "/act", true ,4)) { if(!cmdtext [3]) return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /act [action]"); new message[128]; format(message, sizeof(message), "> %s ((%s))", cmdtext[5], GetName(playerid)); //SendClientMessageToAll(0xC2A2DAAA, str); ProxDetector(30.0, playerid, message, 0xC2A2DAAA); return 1; } /*CMD:act(playerid, params) { if(!cmdtext[3]) return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /act [action]"); new message[128]; format(message, sizeof(message), "> %s ((%s))", cmdtext[5], GetName(playerid)); ProxDetector(30.0, playerid, message, 0xC2A2DAAA); return 1; }*/ new cmd[200], idx; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/car", true, 10) == 0) { if (PlayerInfo[playerid][pRights] == 3) { new String[200]; new tmp[256]; new Float:x, Float:y, Float:z; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COL_RED, "You didn't give a vehicle name"); new vehicle = GetVehicleModelIDFromName(tmp); if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, COL_RED, "That vehicle name was not found"); new Float:a; GetPlayerFacingAngle(playerid, a); GetPlayerPos(playerid, x, y, z); if(IsPlayerInAnyVehicle(playerid) == 1) { GetXYInFrontOfPlayer(playerid, x, y, 8); } else { GetXYInFrontOfPlayer(playerid, x, y, 5); } new PlayersVehicle = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1); LinkVehicleToInterior(PlayersVehicle, GetPlayerInterior(playerid)); format(String, sizeof(String), "You have spawned a %s", aVehicleNames[vehicle - 400]); SendClientMessage(playerid, COL_GREEN, String); } else { SendClientMessage(playerid, COL_RED, "You don't have to rights to use this command."); } return 1; } return 0; } /*CMD:giverights(playerid, params[]) { if(PlayerInfo[playerid][pRights] < 3) return 0; new target, rights, Playername[MAX_PLAYER_NAME], Adminname[MAX_PLAYER_NAME]; if(sscanf(params, "ud", target,rights)) return SendClientMessage(playerid, 0xFFFFFFAA, "USAGE: /giverights [playerid] [level]"); if(!IsPlayerConnected(target)) return SendClientMessage(playerid, COL_GREY, "Player is not connected!"); GetPlayerName(playerid, Adminname, sizeof(Adminname)); GetPlayerName(target, Playername, sizeof(Playername)); PlayerInfo[target][pRights] = rights; return 1; }*/ ///Commands strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } GetVehicleModelIDFromName(vname[]) { for(new i = 0; i < 211; i++) { if(strfind(aVehicleNames[i], vname, true) != -1) return i + 400; } return -1; } stock GetXYInFrontOfPlayer(playerid, &Float:x2, &Float:y2, Float:distance) { new Float:a; GetPlayerPos(playerid, x2, y2, a); GetPlayerFacingAngle(playerid, a); if(GetPlayerVehicleID(playerid)) { GetVehicleZAngle(GetPlayerVehicleID(playerid), a); } x2 += (distance * floatsin(-a, degrees)); y2 += (distance * floatcos(-a, degrees)); }