pawn Код:
#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 0xFFFFFFAAenum 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;
}