Tutorial12 PWN
Tutorial12 PWN
#include <a_mysql>
#include <sscanf2>
#include <zcmd>
#include <DOF2>
#define MAX_PASS_LEN 65
#define SALT_LEN 13
#define MAX_WEAPONS 13
enum //Dialogs
{
DIALOG_LOGIN,
DIALOG_REGISTRO
};
enum PLAYER_DATA
{
accid,
nome[MAX_PLAYER_NAME],
senha[MAX_PASS_LEN],
admin,
Float:posX,
Float:posY,
Float:posZ,
Float:angulo,
Float:health,
Float:armor,
money,
interior,
vw,
skin,
score,
ORM:ormid,
bool:logado,
pSalt[SALT_LEN]
};
new PlayerData[MAX_PLAYERS][PLAYER_DATA];
enum WEAPON_DATA
{
weaponid,
ammo
};
new WeaponData[MAX_PLAYERS][MAX_WEAPONS][WEAPON_DATA];
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("Blank Script");
LoadMap("maps/favela_objects.txt");
DataBaseInit();
return 1;
}
public OnGameModeExit()
{
DOF2_Exit();
mysql_close(DBConn);
return 1;
}
public OnPlayerConnect(playerid)
{
RemoveBuildingFromFile(playerid, "maps/favela_buildings.txt");
LoadPlayerData(playerid);
return 1;
}
new rsnstr[3][] =
{
"Timeout/Crash",
"Saiu",
"Kickado/Banido"
};
new string[64];
format(string, sizeof(string), "%s foi desconectado (%s)",
GetPlayerNameEx(playerid), rsnstr[reason]);
SendClientMessageToAll(-1, string);
}
orm_destroy(PlayerData[playerid][ormid]);
for(new PLAYER_DATA:i; i < PLAYER_DATA; i++)
PlayerData[playerid][i] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
if(PlayerData[playerid][logado] == false)
{
SetPlayerData(playerid);
SetPlayerWeaponData(playerid);
PlayerData[playerid][logado] = true;
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
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 OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
return 1;
}
// FUNCOES
function OnPlayerLogin(playerid)
{
orm_setkey(PlayerData[playerid][ormid], "id");
function DataBaseInit()
{
//new MYSQL:DBConn, host[16], username[MAX_PLAYER_NAME],
database[MAX_PLAYER_NAME], pass[16];
LoadDBSettings("dbconfig.ini");
DBConn = mysql_connect(host, username, pass, database);
if(mysql_errno() == 0)
{
printf("[MySQL] Database '%s' conectada com sucesso!", database);
print("[MySQL] Verificando tabelas...");
return 1;
}
}
return printf("Mapa '%s' carregado com sucesso!",file);
}
else return printf("Erro ao carregar o mapa '%s'!",file);
}
// COMANDOS
new Float:pos[3];
GetPlayerPos(giveplayerid, pos[0], pos[1], pos[2]);
format(string, sizeof(string), "PosX: %f PosY: %f PosZ: %f", pos[0], pos[1],
pos[2]);
SendClientMessage(playerid, -1, string);
return 1;
}
// PROCEDIMENTOS
stock SavePlayerData(playerid)
{
PlayerData[playerid][armor] = GetPlayerArmourEx(playerid);
PlayerData[playerid][health] = GetPlayerHealthEx(playerid);
PlayerData[playerid][money] = GetPlayerMoney(playerid);
PlayerData[playerid][skin] = GetPlayerSkin(playerid);
PlayerData[playerid][interior] = GetPlayerInterior(playerid);
PlayerData[playerid][vw] = GetPlayerVirtualWorld(playerid);
PlayerData[playerid][score] = GetPlayerScore(playerid);
GetPlayerFacingAngle(playerid, PlayerData[playerid][angulo]);
GetPlayerPos(playerid,
PlayerData[playerid][posX],
PlayerData[playerid][posY],
PlayerData[playerid][posZ]);
orm_update(PlayerData[playerid][ormid]);
}
stock SetPlayerWeaponData(playerid)
{
GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_SHOTGUN][weaponid],
WeaponData[playerid][WEAPONSLOT_SHOTGUN][ammo]);
GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_MACHINEGUN]
[weaponid], WeaponData[playerid][WEAPONSLOT_MACHINEGUN][ammo]);
GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_FUZIL][weaponid],
WeaponData[playerid][WEAPONSLOT_FUZIL][ammo]);
GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_RIFLE][weaponid],
WeaponData[playerid][WEAPONSLOT_RIFLE][ammo]);
SetPlayerArmedWeapon(playerid,0);
}
stock SetPlayerData(playerid)
{
SetPlayerScore(playerid, PlayerData[playerid][score]);
SetPlayerHealth(playerid, PlayerData[playerid][health]);
SetPlayerArmour(playerid, PlayerData[playerid][armor]);
GivePlayerMoney(playerid, PlayerData[playerid][money]);
SetPlayerInterior(playerid, PlayerData[playerid][interior]);
SetPlayerVirtualWorld(playerid, PlayerData[playerid][vw]);
}
stock LoadPlayerWeaponData(playerid)
{
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_FIST][weaponid], "fist");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_WHITEGUN][weaponid], "white_gun");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_PISTOL][weaponid], "pistol");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_PISTOL][ammo], "pistol_ammo");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_SHOTGUN][weaponid], "shotgun");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_SHOTGUN][ammo], "shotgun_ammo");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_MACHINEGUN][weaponid], "machinegun");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_MACHINEGUN][ammo], "machine_ammo");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_FUZIL][weaponid], "fuzil");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_FUZIL][ammo], "fuzil_ammo");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_RIFLE][weaponid], "rifle");
orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid]
[WEAPONSLOT_RIFLE][ammo], "rifle_ammo");
}
stock LoadPlayerData(playerid)
{
PlayerData[playerid][logado] = false;
format(PlayerData[playerid][nome], MAX_PLAYER_NAME, "%s",
GetPlayerNameEx(playerid));
PlayerData[playerid][ormid] = orm_create("Player", DBConn);
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][accid],
"id");
orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][nome],
MAX_PLAYER_NAME, "nome");
orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][senha],
MAX_PASS_LEN, "senha");
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][admin],
"admin");
orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posX],
"posX");
orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posY],
"posY");
orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posZ],
"posZ");
orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][angulo],
"angulo");
orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][health],
"health");
orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][armor],
"armor");
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][money],
"dinheiro");
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][score],
"score");
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][skin],
"skin");
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][interior],
"interior");
orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][vw], "vw");
orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][pSalt],
SALT_LEN, "salt");
//LoadPlayerWeaponData(playerid);
orm_setkey(PlayerData[playerid][ormid], "nome");
orm_select(PlayerData[playerid][ormid], "OnPlayerLogin", "d", playerid);
}
stock LoadDBSettings(filename[])
{
//new host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME],
pass[16];
if(DOF2_FileExists(filename))
{
format(host, sizeof(host), "%s", DOF2_GetString(filename,"address"));
format(username, sizeof(username), "%s",
DOF2_GetString(filename,"username"));
format(database, sizeof(database), "%s",
DOF2_GetString(filename,"database"));
format(pass, sizeof(pass), "%s", DOF2_GetString(filename,"password"));
}
else
{
DOF2_CreateFile(filename);
DOF2_SetString(filename,"address","127.0.0.1");
DOF2_SetString(filename,"username","root");
DOF2_SetString(filename,"database", " ");
DOF2_SetString(filename,"password", " ");
DOF2_SaveFile();
}
}
stock Salt()
{
new salt[SALT_LEN];
for(new i; i < SALT_LEN-1; i++)
salt[i] = random(79) + 47;
salt[SALT_LEN-1] = 0;
return salt;
}
stock GetPlayerNameEx(playerid)
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
return PlayerName;
}
function Float:GetPlayerHealthEx(playerid)
{
new Float:playerhealth;
GetPlayerHealth(playerid, playerhealth);
return playerhealth;
}
function Float:GetPlayerArmourEx(playerid)
{
new Float:playerarmor;
GetPlayerArmour(playerid, playerarmor);
return playerarmor;
}