Veja meu Edit.
E em quanto ao spawn verifique se tem algum SpawnPlayer no cуdigo de registro/login. |
saiu denovo e entro, coloko a senha correta e nгo entra no sv fica akele negocio em baixo '' << '' ''>> '' SPAWN '' ai eu aperto SPAWN e entra normal eu keria tirar isso. |
#include <a_samp>
#include <zcmd>
#include <dini>
#include <DOF2>
#define DIALOG_REGISTRO 1
#define DIALOG_LOGAR 2
#define COLOR_RED 0x
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_AQUI 0xFFFFFFAA
enum Informacoes
{
Senha,
Matou,
Morreu,
Dinheiro
}
new Player[MAX_PLAYERS][Informacoes];
new Erro[MAX_PLAYERS];
forward SendMSG();
forward TempoParaOScore(playerid);
new RandomColors [] =
{
0xFF5A00FF, //Laranja
0xF50000FF, //Vermelho
0xF50000FF, //Ciano
0x91FF00FF, //Verde Limгo
0xFF0091FF, //Rosa
0x009000FF, //Verde Puro
0x9600FFFF
};
new Text:ImagemEntrada;
new Hospital[MAX_PLAYERS];
new Text:Textdrawdebaixodoradar;
new Text:velo[MAX_PLAYERS];
forward Velocimetro();
new NomeCarro[212][] =
{
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana",
"Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat",
"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", "Cropduster","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", "Dune", "Sweeper", "Broadway",
"Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer 3", "Emperor", "Wayfarer", "Euros", "Hotdog",
"Club", "Freight Carriage", "Trailer 4", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)",
"Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer A",
"Luggage Trailer B", "Stairs", "BoxVille", "Tiller", "Utility Trailer"
};
new RandomMSG[][] =
{
"| INFO | Registrem-se em nosso fуrum: http://www.nvcrpg.forumbrasil.net e ganhe um Jetpack!",
"| INFO | Nгo mate ninguem, pois se matar serб preso automaticamente por 10 minutos sem aviso!",
"| INFO | Use /admins para ver os administradores onlines e /SOS [Dъvida] para chamar um ADM!",
"| INFO | Viu hacker? Bug? Contate um Administrador digitando /sos, vocк poderб ser recompensado!",
"| INFO | Estб perdido? Nгo sabe aonde fica os lugares importante? Use /GPS e boa sorte!",
"| INFO | Adicione o IP do servidor nos favoritos IP: nvcrpg.servegame.com:7777",
"| INFO | Adicione este servidor aos seus Favoritos. Assim poderб jogar todos os dias",
"| INFO | Olб como vai? O dia estб quente hoje num й mesmo? Que tal ir na praia de Verona Beach?",
"| INFO | Escolha uma profissгo indo na agencia de empregos, nгo sabe ir? /GPS."
};
main()
{
print("\nServidor ligado com sucesso!");
print(" [NVC] New Virtual City RPG v3.0 ™");
print("----------------------------------\n");
}
public OnGameModeInit()
{
Textdrawdebaixodoradar= TextDrawCreate(1.0, 433.0, "~r~ Comandos ~w~uteis ~r~/sos /admins /comandos, ~w~registrem-se por favor em nosso forum: ~r~www.nvcrpg.forumbrasil.net");
TextDrawAlignment(Textdrawdebaixodoradar,0);//Nгo mecher
TextDrawBackgroundColor(Textdrawdebaixodoradar,0x000000ff);//Nгo mecher
TextDrawFont(Textdrawdebaixodoradar,3);//Tipo de Letro (veja o *[2]mais abaixo)
TextDrawLetterSize(Textdrawdebaixodoradar,0.2999, 1.4);//Nгo mecher
TextDrawBoxColor(Textdrawdebaixodoradar,0x00000050);//Nгo mecher
TextDrawColor(Textdrawdebaixodoradar,0xffffffff);//Nгo mecher
TextDrawSetOutline(Textdrawdebaixodoradar,1);//Nгo mecher
TextDrawSetProportional(Textdrawdebaixodoradar,1);//Nгo mecher
TextDrawSetShadow(Textdrawdebaixodoradar,1);//Nгo mecher
SetTimer("Velocimetro", 500, 1);
SetTimer("TempoParaOScore", 1200000, true);
SetTimer("SendMSG", 200000, true);
ImagemEntrada = TextDrawCreate(1.000000, -1.000000, "loadsc2:loadsc2");
TextDrawBackgroundColor(ImagemEntrada, 255);
TextDrawFont(ImagemEntrada, 4);
TextDrawLetterSize(ImagemEntrada, 0.500000, 1.000000);
TextDrawColor(ImagemEntrada, -1);
TextDrawSetOutline(ImagemEntrada, 0);
TextDrawSetProportional(ImagemEntrada, 1);
TextDrawSetShadow(ImagemEntrada, 1);
TextDrawUseBox(ImagemEntrada, 1);
TextDrawBoxColor(ImagemEntrada, 255);
TextDrawTextSize(ImagemEntrada, 645.000000, 450.000000);
if(!fexist("levels.dkn")) dini_Create("levels.dkn");
SetGameModeText("NVC Brasil");
AddPlayerClass(0, 1219.0681,-1812.4017,16.5938,188.1141, 0, 0, 0, 0, 0, 0);
return 1;
for(new i; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i))
{
TextDrawShowForPlayer(i, Textdrawdebaixodoradar);
}
}
}
public OnGameModeExit()
{
DOF2_Exit();
return 1;
TextDrawHideForAll(Textdrawdebaixodoradar);
TextDrawDestroy(Textdrawdebaixodoradar);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
TextDrawShowForPlayer(playerid, ImagemEntrada);
SetPlayerPos(playerid, 1219.0681,-1812.4017,16.5938,188.1141);
SetPlayerCameraPos(playerid, 1219.0681,-1812.4017,16.5938,188.1141);
SetPlayerCameraLookAt(playerid, 1219.0681,-1812.4017,16.5938,188.1141);
return 1;
}
public OnPlayerConnect(playerid)
{
velo[playerid] = TextDrawCreate(212, 377,"~g~Velocidade:0Km/h");
TextDrawTextSize(velo[playerid], 470, 510);
TextDrawColor(velo[playerid], 160);
TextDrawUseBox(velo[playerid], 1);
TextDrawSetShadow(velo[playerid], 0);
TextDrawBoxColor(velo[playerid], 0);
TextDrawSetOutline(velo[playerid], 1);
TextDrawFont(velo[playerid], 1);
TextDrawSetProportional(velo[playerid], 1);
TextDrawHideForPlayer(playerid, velo[playerid]);
return true;
TextDrawShowForPlayer(playerid, Textdrawdebaixodoradar);
TextDrawShowForPlayer(playerid, ImagemEntrada);
new arquivo[40], name[MAX_PLAYER_NAME]; //'arquivo' uma string para a format | 'name' para pegar o nome do playerid
GetPlayerName(playerid, name, 32); //Pega o nome do playerid
format(arquivo, 40, "Contas/%s.ini", name); //Formata o arquivo com o nome do playerid
if(DOF2_FileExists(arquivo)) //Verifica se a pasta existe
{ //Caso existir, irб retornar a dialog de Login
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
}
else //Caso o arquivo nгo exista
{ //Irб retornar a dialog de registro
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new arquivo[40], name[MAX_PLAYER_NAME]; //'arquivo' uma string para a format | 'name' para pegar o nome do playerid
GetPlayerName(playerid, name, 32); //Para pegar o nome do playerid
format(arquivo, 40, "Contas/%s.ini", name); //Formata o arquivo com o nome do playerid
if(DOF2_FileExists(arquivo)) //Verifica se o arquivo da conta do playerid existe
{
Player[playerid][Dinheiro] = GetPlayerMoney(playerid); //Pega o dinheiro que o player tem no momento e iguala a Var de informaзхes dele
DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]); //Salva a senha, caso ele tenha modificado
DOF2_SetInt(arquivo, "Matou", Player[playerid][Matou]); //Salva quantos players ele matou
DOF2_SetInt(arquivo, "Morreu", Player[playerid][Morreu]); //Salva quantas vezes ele morreu
DOF2_SetInt(arquivo, "Dinheiro", Player[playerid][Dinheiro]); //Salva o dinheiro que foi igualado ao GetPlayerMoney logo acima no comeзo da funзгo
DOF2_SaveFile(); //E finalmente salvando o arquivo
}
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawHideForPlayer(playerid, ImagemEntrada);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid,playerid,reason);
Hospital[playerid] = 1;
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/AgenciaLS", cmdtext, true, 10) == 0)
{
SetPlayerPos(playerid, 1219.0681,-1812.4017,16.5938,188.1141);
SendClientMessage(playerid, 0xFF00AA, "Seja bem vindo a agencia de empregos de LS!");
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(Hospital[playerid] == 1)
{
SetPlayerPos(playerid, 1175.9734,-1324.0140,14.1953,58.4604);
TogglePlayerControllable(playerid, false);
SetTimerEx("Curando", 5000, false, "i", playerid);
SendClientMessage(playerid, 0xFF3030FF,"| INFO | Vocк estб sendo curado por um medico Negгo, aguarde.");
// Vocк pode acrescentar mais coisas ao seu gosto.
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new arquivo[40], name[MAX_PLAYER_NAME]; //'arquivo' uma string para a format | 'name' para pegar o nome do playerid
GetPlayerName(playerid, name, 32); //Para pegar o nome do playerid
format(arquivo, 40, "Contas/%s.ini", name); //Formata o arquivo com o nome do playerid
if(dialogid == DIALOG_REGISTRO)
{
if(!strval(inputtext)) //Verifica se o player digitou LETRAS, caso for true
{ //Retorna a dialog de registro novamente para ele digitar NЪMEROS
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
return 1;
}
if(!response) //Verifica se ele clicar em 'Cancelar"
{ //Caso ele clicar em cancelar, irб retornar ao playerid KICK
Kick(playerid);
return 1;
}
else //Verifica se ele Confirma o Registro
{ //Caso for true, ira criar o arquivo na pasta CONTAS
Player[playerid][Senha] = strval(inputtext); //Player[playerid][Senha] vai ser igual ao que ele digitar na dialog Registro
DOF2_CreateFile(arquivo); //Vai criar o arquvivo na pasta Contas
DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]); //Vai salvar a senha do playerid
DOF2_SetInt(arquivo, "Matou", Player[playerid][Matou]); //Vai salvar quantas vezes ele matou
DOF2_SetInt(arquivo, "Morreu", Player[playerid][Morreu]); //Vai salvar quantas vezes ele morreu
DOF2_SetInt(arquivo, "Dinheiro", Player[playerid][Dinheiro]); //Vai salvar o dinheiro dele
DOF2_SaveFile(); //E finalmente salvando o arquivo, sem essa funзгo o arquivo nгo serб salvo!
//Retornando a dialog de Login ao player no final para ele logar no server
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
}
}
if(dialogid == DIALOG_LOGAR)
{
if(!strval(inputtext)) //Verifica se o player digitou letras, caso for true
{ //Retorna a dialog de Login novamente para ele digitar NЪMEROS
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
return 1;
}
if(!response) //Verifica se ele clicar em 'Cancelar"
{ //Caso ele clicar em cancelar, irб retornar ao playerid KICK
Kick(playerid);
return 1;
}
else
{
Player[playerid][Senha] = DOF2_GetInt(arquivo, "Senha");
if(strval(inputtext) == Player[playerid][Senha])
{
Player[playerid][Matou] = DOF2_GetInt(arquivo, "Matou");
Player[playerid][Morreu] = DOF2_GetInt(arquivo, "Morreu");
Player[playerid][Dinheiro] = DOF2_GetInt(arquivo, "Dinheiro");
GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
SpawnPlayer(playerid);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
Erro[playerid]++;
if(Erro[playerid] == 5)
{
SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
Ban(playerid);
return 1;
}
}
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock PlayerName(playerid)
{
new PlayerNameLevel[MAX_PLAYERS];
GetPlayerName(playerid, PlayerNameLevel, MAX_PLAYERS);
return PlayerNameLevel;
}
public SendMSG()
{
new random2 = random(sizeof(RandomColors));
new randMSG = random(sizeof(RandomMSG));
SendClientMessageToAll(RandomColors[random2], RandomMSG[randMSG]);
}
forward Curando(playerid);
public Curando(playerid)
{
TogglePlayerControllable(playerid, true);
Hospital[playerid] = 0;
SetPlayerPos(playerid, 1175.9734,-1324.0140,14.1953,58.4604);
GivePlayerMoney(playerid, -200);
SendClientMessage(playerid, 0xFF3030FF,"| INFO | O mйdico negгo fez uma massagem em vocк e te curou, preзo: 200");
}
public TempoParaOScore(playerid)
{
SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
SendClientMessage(playerid, -1, "Vocк ganhou 1 level por ficar 20 minutos no servidor, meus parabens!");
return 1;
}
public Velocimetro()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(i, aname, MAX_PLAYER_NAME);
if(IsPlayerInAnyVehicle(i))
{
new Float:X, Float:Y, Float:Z, Float:Speed;
GetVehicleVelocity(GetPlayerVehicleID(i), X, Y, Z);
Speed = floatmul(floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))), 200.0);
new Float:vcarro;
GetVehicleHealth(GetPlayerVehicleID(i), vcarro);
new velocidade;
velocidade = floatround(Speed, floatround_floor);
new string[128];
new PlayerVehicleModelID = GetVehicleModel(GetPlayerVehicleID(i));
PlayerVehicleModelID -= 400;
new nocarro[30];
format(nocarro,30,NomeCarro[PlayerVehicleModelID]);
format(string, 128,"~g~Veiculo:~w~%s~n~~g~Velocidade:~w~%i ~b~KM/H~n~~g~Lataria:~w~%.0f%",nocarro,velocidade,vcarro);
TextDrawSetString(velo[i], string);
TextDrawShowForPlayer(i, velo[i]);
}
else TextDrawHideForPlayer(i, velo[i]);
}
else
{
TextDrawHideForPlayer(i, velo[i]);
}
}
return true;
}