25.07.2015, 09:19
Hi!
I have created my own admin system with zcmd and MySQL. The problem is that when someone connects to the server he takes some money or score. When he disconnects and connects again his stats are the same as the beginning! Any help?
My script:
I have created my own admin system with zcmd and MySQL. The problem is that when someone connects to the server he takes some money or score. When he disconnects and connects again his stats are the same as the beginning! Any help?
My script:
PHP код:
#include <a_samp>
#include <a_sampdb>
#include <zcmd>
#include <sscanf2>
//Defines
#define IsConnect(%0) IsPlayerConnected(%0)
#define SPD(%0,%1,%2,%3,%4,%5,%6) ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6)
//Dialogs
#define DIALOG_REG 1
#define DIALOG_LOG 2
#define DIALOG_ADMINS 3
#define CMDS_ADMIN 4
#define SERVER_HELP 5
#define SERVER_TELES 6
#define LIGHTBLUE2 0xF6BB0AA
//enums
enum P{
money,
alevel,
score,
password[256],
kills,
deths,
bool:mute,
pCar,
bool:Agoto,
bool:jail
}
//Global Vairables
new DB:database;
new P_DATA[MAX_PLAYERS][P];
new IsPlayerInDMgoto[MAX_PLAYERS];
new IsPlayerInDMforspamit[MAX_PLAYERS];
new VehicleNames[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"}
};
new AntiSpawnTimer;
//forwards
forward Timer_ProcessMutes();
forward GOD(playerid);
//functions
Login(playerid){
new name[MAX_PLAYER_NAME],q[256],DBResult:res,fields[256];
GetPlayerName(playerid,name,sizeof(name));
format(q,sizeof(q),"SELECT * FROM Account WHERE username='%s'",name);
res = db_query(database,q);
db_get_field_assoc(res,"score",fields,sizeof(fields)); P_DATA[playerid][score] = strval(fields); SetPlayerScore(playerid,P_DATA[playerid][score]);
db_get_field_assoc(res,"money",fields,sizeof(fields)); P_DATA[playerid][money] = strval(fields); SetCash(playerid,P_DATA[playerid][money]);
db_get_field_assoc(res,"kills",fields,sizeof(fields)); P_DATA[playerid][kills] = strval(fields);
db_get_field_assoc(res,"deths",fields,sizeof(fields)); P_DATA[playerid][deths] = strval(fields);
db_get_field_assoc(res,"alevel",fields,sizeof(fields)); P_DATA[playerid][alevel] = strval(fields);
return 1;
}
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(VehicleNames[i], vname, true) != -1 )
return i + 400;
}
return -1;
}
ResetPlayer(playerid){
P_DATA[playerid][jail] = false;
P_DATA[playerid][Agoto] = true;
P_DATA[playerid][pCar] = -1;
P_DATA[playerid][mute] = false;
P_DATA[playerid][money] = 0;
P_DATA[playerid][alevel] = 0;
P_DATA[playerid][score] = 0;
P_DATA[playerid][kills] = 0;
P_DATA[playerid][deths] = 0;
return 1;
}
SetCash(playerid,cash){
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,cash);
return 1;
}
Save(playerid){
new name[MAX_PLAYER_NAME],q[256];
GetPlayerName(playerid,name,sizeof(name));
format(q,sizeof(q),"UPDATE Account SET alevel = '%i',score = '%i',money='%i',kills='%i',deths='%i', WHERE username='%s'",
P_DATA[playerid][alevel],GetPlayerScore(playerid),GetPlayerMoney(playerid),P_DATA[playerid][kills],P_DATA[playerid][deths],name);
db_free_result(db_query(database,q));
return 1;
}
stock GetPlayersName(playerid)
{
new pName[32];
GetPlayerName(playerid,pName,32);
return pName;
}
public OnGameModeInit(){
SetTimer("Timer_ProcessMutes",1000,true);
database=db_open("server");
db_free_result(db_query(database,"CREATE TABLE IF NOT EXISTS Account (username VARCHAR(24),password VARCHAR(256),alevel INTEGER DEFAULT 0 NOT NULL,score INTEGER DEFAULT 0 NOT NULL,money INTEGER DEFAULT 0 NOT NULL,kills INTEGER DEFAULT 0 NOT NULL,deths INTEGER DEFAULT 0 NOT NULL)"));
return 1;
}
public OnGameModeExit(){
db_close(database);
return 1;
}
public OnPlayerDisconnect(playerid,reason){
KillTimer(AntiSpawnTimer);
Save(playerid);
return 1;
}
public OnPlayerText(playerid, text[])
{
if(text[0] == '/' && P_DATA[playerid][jail] == true && strlen(text) > 1){
SendClientMessage(playerid,-1,"You cannot use any command in jail");
return 0;
}
if(P_DATA[playerid][mute] == true){
SendClientMessage(playerid,-1,"{FFFFFF}You are muted! You{FF0000} can't{FFFFFF} talk!");
return 0;
}
return 1;
}
public OnPlayerConnect(playerid){
ResetPlayer(playerid);
new name[MAX_PLAYER_NAME],q[256],DBResult:Result;
GetPlayerName(playerid,name,sizeof(name));
format(q,sizeof(q),"SELECT password FROM Account WHERE username='%s'",name);
Result = db_query(database,q);
if(db_num_rows(Result)){
new field[256];
db_get_field_assoc(Result,"password",field,sizeof(field)); format(P_DATA[playerid][password],256,"%s",field);
ShowPlayerDialog(playerid,DIALOG_LOG,DIALOG_STYLE_PASSWORD,"{FF0000}Login","{FFFFFF}Welcome back to the server!\n\nType your password to Login:","Login","Quit");
}
else{
ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"{FF0000}Register","{FFFFFF}Welcome to our server for the first time!\nType your new password to register an account!","Register","Quit");
}
return 1;
}
public OnPlayerSpawn(playerid)
{
IsPlayerInDMgoto[playerid] = false;
IsPlayerInDMforspamit[playerid] = false;
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid){
case DIALOG_LOG:{
if(!response)return Kick(playerid);
if(strcmp(inputtext,P_DATA[playerid][password],true))return ShowPlayerDialog(playerid,DIALOG_LOG,DIALOG_STYLE_PASSWORD,"{FF0000}Login Error","{FF0000}Wrong password!\n\n\n{FFFFFF}Try again:","Login","Quit");
Login(playerid);
}
case DIALOG_REG:{
if(!response)return Kick(playerid);
if(strlen(inputtext) == 0)return ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"{FF0000}Register","{FFFFFF}Welcome to our server for the first time!\nType your new password to register an account!","Register","Quit");
new name[MAX_PLAYER_NAME],q[256],DBResult:Res;
GetPlayerName(playerid,name,sizeof(name));
format(q,sizeof(q),"INSERT INTO Account (username,password) VALUES ('%s','%s')",name,inputtext);
Res = db_query(database,q);
db_free_result(Res);
}
}
return 1;
}