12.02.2014, 07:29
I'm building an RP server and I hit a snare. One of the FS for the server saves kills, stats, etc. but lacks saving Skin and Player Position (because its an admin system). It uses YSI, so I would prefer to use that, BUT I am open to use any system to store Position and Skin, but I am very uneducated in this area of scripting, so I ask if the kind community in SAMP could help me and guide me through what I need to know. On top of that, I would also like to create a command that resets these stats in case the player chooses to reset their account details. Could I also incorporate deleting their file used in the Admin system into that command? Here's some additional information:
My GM script (far from finished, IDK if it makes sense to include it here, but people usually ask for it, 600+ lines of bare bones):
The Admin system I'm using (I edited my version slightly, to add additional chat channels):
http://forum.sa-mp.com/showthread.ph...ight=j.l.admin
I have to catch some sleep, so until morning, I will be eagerly awaiting a helping hand. Thank You!
My GM script (far from finished, IDK if it makes sense to include it here, but people usually ask for it, 600+ lines of bare bones):
Код:
/*
CREDITS
=======
-Base GM Script by Aerotactics
*/
#include <a_samp>
#include <foreach>
#include <streamer>
#include <LocalChat>
main()
{
print("\n----------------------------------");
print(" LS-RP Loaded");
print("----------------------------------\n");
}
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_FADE1 0xE6E6E6E6
#define COLOR_PM1 0xA65FC7FF
#define COLOR_PM2 0xD35FC7FF
#define COLOR_FADE2 0xC8C8C8C8
#define COLOR_FADE3 0xAAAAAAAA
#define COLOR_FADE4 0x8C8C8C8C
#define COLOR_FADE5 0x6E6E6E6E
#define COLOR_OOC 0xE0FFFFFF
#define COLOR_GREY 0xAFAFAFFF
#define COLOR_LIGHTGREEN 0xADFF2FFF
#define COLOR_LIGHTRED 0xFF6347FF
#define COLOR_DARKRED 0xAA3333FF
#define COLOR_RED 0xFF0606FF
#define COLOR_LIGHTBLUE 0x33CCFFFF
#define COLOR_GREEN 0x33AA33FF
#define COLOR_YELLOW 0xFFFF00FF
#define COLOR_PURPLE 0xC2A2DAFF
#define COLOR_ORANGE 0xFF9900FF
#define COLOR_REPORT 0xFFFF91FF
#define COLOR_RADIO 0x8D8DFFFF
#define COLOR_DEPTRADIO 0xFFD700FF
#define COLOR_BLUE 0x2641FEFF
#define COLOR_MEDIC 0xFF8282FF
#define COLOR_NEWBIE 0x7DAEFFFF
#define COLOR_LIME 0x00FF00FF
#define COLOR_NEWS 0x049C7100
#define COLOR_CYAN 0x01FCFFFF
#define COLOR_VIP 0xC93CCEFF
#define COLOR_GOLD 0xFFD700FF
#define Dialog_Sex1 1
#define Dialog_RaceM 2
#define Dialog_RaceF 3
#define Dialog_MaleW 4
#define Dialog_MaleB 5
#define Dialog_MaleO 6
#define Dialog_MaleH 7
#define Dialog_MaleN 8
#define Dialog_FMaleW 9
#define Dialog_FMaleB 10
#define Dialog_FMaleO 11
#define Dialog_FMaleH 12
#define Dialog_FMaleN 13
#define Dialog_MSelect 14
#define Dialog_FSelect 15
#define savefolder "/save/%s.ini"
stock NameValidator(playerid)
{
new pname[MAX_PLAYER_NAME],underline=0;
GetPlayerName(playerid, pname, sizeof(pname));
if(strfind(pname,"[",true) != (-1)) return 0;
else if(strfind(pname,"]",true) != (-1)) return 0;
else if(strfind(pname,"$",true) != (-1)) return 0;
else if(strfind(pname,"(",true) != (-1)) return 0;
else if(strfind(pname,")",true) != (-1)) return 0;
else if(strfind(pname,"=",true) != (-1)) return 0;
else if(strfind(pname,"@",true) != (-1)) return 0;
else if(strfind(pname,"1",true) != (-1)) return 0;
else if(strfind(pname,"2",true) != (-1)) return 0;
else if(strfind(pname,"3",true) != (-1)) return 0;
else if(strfind(pname,"4",true) != (-1)) return 0;
else if(strfind(pname,"5",true) != (-1)) return 0;
else if(strfind(pname,"6",true) != (-1)) return 0;
else if(strfind(pname,"7",true) != (-1)) return 0;
else if(strfind(pname,"8",true) != (-1)) return 0;
else if(strfind(pname,"9",true) != (-1)) return 0;
new maxname = strlen(pname);
for(new i=0; i<maxname; i++)
{
if(pname[i] == '_') underline ++;
}
if(underline != 1) return 0;
pname[0] = toupper(pname[0]);
for(new x=1; x<maxname; x++)
{
if(pname[x] == '_') pname[x+1] = toupper(pname[x+1]);
else if(pname[x] != '_' && pname[x-1] != '_') pname[x] = tolower(pname[x]);
}
SetPlayerName(playerid, "New_Name");
SetPlayerName(playerid, pname);
return 1;
}
stock GetPlayerRPName( playerid, name[ ], len )
{
GetPlayerName( playerid, name, len );
for(new i = 0; i < len; i++ )
{
if ( name[ i ] == '_' )
name[ i ] = ' ';
}
}
halt(seconds)
{
new _newTime[4], _oldTime[4];
gettime(_oldTime[0], _oldTime[1], _oldTime[2]);
_oldTime[3] = _oldTime[2] + (_oldTime[1] * 60) + (_oldTime[0] * 600);
while(_newTime[3] != (_oldTime[3] + seconds))
{
gettime(_newTime[0], _newTime[1], _newTime[2]);
_newTime[3] = _newTime[2] + (_newTime[1] * 60) + (_newTime[0] * 600);
}
}
new Tcar;
new Tboat;
new Tjet;
new gdo;
new gdi;
new gdo2;
new Text:randommsg;
new RandomMessages[][] =
{
"~g~Los Santos Roleplay: ~w~This server won't save skins, but saves ~g~money~w~, ~b~vehicles~w~, and ~y~property~w~.",
"~g~Los Santos Roleplay: ~w~The aim of this server is to be ~y~simple ~w~yet ~y~effective~w~.",
"~g~Los Santos Roleplay: ~w~This server was created by ~y~Aerotactics~w~. Why not ~b~G~r~o~y~o~b~g~g~l~r~e ~w~'~y~Aerotactics~w~'?",
"~g~Los Santos Roleplay: ~r~PSA:~w~ This ~r~Public Service Announcement~w~ was brought to you by ~g~LS-RP~w~.",
"~g~Los Santos Roleplay: ~w~I ~r~NEVER~w~ ask for donations. Did you know this server runs on a laptop?",
"~g~Los Santos Roleplay: ~w~Is a player out of line? Please ~r~/report ~w~them!",
"~g~Los Santos Roleplay: ~w~Enjoying your stay? You are ~y~always welcome~w~ to come back!",
"~g~Los Santos Roleplay: ~w~This server started on the idea of ~b~roleplay ~w~for ~p~~h~VCS:PC.",
"~g~Los Santos Roleplay: ~w~Suggestions? Send ~y~Aerotactics~w~ a personal message on ~b~~h~the SAMP forums~w~.",
"~g~Los Santos Roleplay: ~w~Bugs? Please ~r~/report~w~ or send ~y~Aerotactics ~w~a PM on ~b~~h~the SAMP forums~w~."
};
forward RandomMessage();
public RandomMessage()
{
TextDrawSetString(randommsg, RandomMessages[random(sizeof(RandomMessages))]);
return 1;
}
public OnGameModeInit()
{
SetGameModeText("LS-RP ALPHA");
SetTimer("RandomMessage",30000,1);
randommsg = TextDrawCreate(7.000000, 427.000000, "_");
TextDrawBackgroundColor(randommsg, 255);
TextDrawFont(randommsg, 1);
TextDrawLetterSize(randommsg, 0.379999, 1.499999);
TextDrawColor(randommsg, -1);
TextDrawSetOutline(randommsg, 1);
TextDrawSetProportional(randommsg, 1);
ManualVehicleEngineAndLights();
gdo=CreatePickup(1559, 14, 1454.5000000,-675.5000000,1274.5999800, -1);
gdi=CreatePickup(1559, 1, 1460.5999800,-629.5999800,95.2000000, -1);
gdo2=CreatePickup(1559, 1, 1454.5000000,-675.5000000,1274.5999800, -1);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Gender Selection", "Choose a gender:", "Male", "Female");
SetPlayerPos(playerid, 1555.5999800,-2312.6001000,-23.4000000);
SetPlayerFacingAngle(playerid, 160);
SetPlayerCameraPos(playerid, 1554.5999800,-2315.6001000,-22.0000000);
SetPlayerCameraLookAt(playerid, 1555.5999800,-2312.6001000,-23.0000000);
return 1;
}
public OnPlayerConnect(playerid)
{
//PlayAudioStreamForPlayer(playerid, "");
if(!NameValidator(playerid))
{
SendClientMessage(playerid,COLOR_RED,"Your name is a non-roleplay name, You have been kicked!");
SendClientMessage(playerid,COLOR_RED,"HINT: Your name must be in Firstname_Lastname format, (E.G: Chris_Hansen)");
halt(2);
Kick(playerid);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, randommsg);
SetPlayerWorldBounds(playerid,3555.9,-24.4,-397.8,-3189.9);
SetPlayerPos(playerid,1573.4,-2330.8,13.2);
SetPlayerFacingAngle(playerid, 90);
SetCameraBehindPlayer(playerid);
//StopAudioStreamForPlayer(playerid);
new name[MAX_PLAYER_NAME+1], string[24+MAX_PLAYER_NAME+1];
GetPlayerRPName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s has arrived in Los Santos.", name);
SendClientMessageToAll(COLOR_GREEN, string);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/tcar", cmdtext, true, 10) == 0)
{
new Float:x,Float:y,Float:z;
new Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
Tcar=CreateVehicle(560,x, y+5, z, a,111,103, -1);
AddVehicleComponent(Tcar, 1138);
AddVehicleComponent(Tcar, 1026);
AddVehicleComponent(Tcar, 1033);
AddVehicleComponent(Tcar, 1010);
AddVehicleComponent(Tcar, 1082);
AddVehicleComponent(Tcar, 1141);
AddVehicleComponent(Tcar, 1169);
ChangeVehiclePaintjob(Tcar, 2);
return 1;
}
if (strcmp("/tboat", cmdtext, true, 10) == 0)
{
new Float:x,Float:y,Float:z;
new Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
Tboat=CreateVehicle(430,x, y+5, z, a,111,103, -1);
return 1;
}
if (strcmp("/tjet", cmdtext, true, 10) == 0)
{
new Float:x,Float:y,Float:z;
new Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
Tjet=CreateVehicle(520,x, y+5, z, a,111,103, -1);
return 1;
}
if(strcmp(cmdtext, "/me", true, 3) == 0)
{
if(!cmdtext[3])return SendClientMessage(playerid, COLOR_RED, "USAGE: /me [text]");
new str[128];
GetPlayerRPName(playerid, str, sizeof(str));
format(str, sizeof(str), "*%s %s", str, cmdtext[4]);
SendLocalMessage(playerid, COLOR_PURPLE, 7, str);
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
if (vehicleid==Tcar)
{
DestroyVehicle(Tcar);
}
if (vehicleid==Tboat)
{
DestroyVehicle(Tboat);
}
if (vehicleid==Tjet)
{
DestroyVehicle(Tjet);
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
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)
{
if (pickupid==gdo)
{
new gcar0;
gcar0=GetPlayerVehicleID(playerid);
SetVehiclePos(gcar0,1460.4000200,-634.0999800,95.2000000);
return 1;
}
else if (pickupid==gdi)
{
gdo=CreatePickup(1559, 14, 1454.5000000,-675.5000000,1274.5999800, -1);
SetPlayerPos(playerid,1454.8000500,-672.0999800,1274.5000000);
return 1;
}
else if (pickupid==gdo2)
{
SetPlayerPos(playerid,1460.4000200,-634.0999800,95.2000000);
SetCameraBehindPlayer(playerid);
return 1;
}
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)
{
if(newkeys == KEY_NO)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
if(engine == 1)
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), 0, lights, alarm, doors, bonnet, boot, objective);
}
else
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), 1, lights, alarm, doors, bonnet, boot, objective);
}
}
}
if(newkeys == KEY_SUBMISSION)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
if(lights == 0)
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, 1, alarm, doors, bonnet, boot, objective);
}
else
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, 0, alarm, doors, bonnet, boot, objective);
}
}
}
if(newkeys == KEY_ANALOG_UP)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
if(bonnet == 0)
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, 1, boot, objective);
}
else
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, 0, boot, objective);
}
}
}
if(newkeys == KEY_ANALOG_DOWN)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
if(boot == 0)
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, 1, objective);
}
else
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, 0, objective);
}
}
}
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[])
{
if(dialogid==1 && response)
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "Choose a Race","White Males\nBlack Males\nOriental Males\nHispanic Males\nNative Males", "Select", "Back");
}
else if(dialogid==1 && !response)
{
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_LIST, "Choose a Race","White Females\nBlack Females\nOriental Females\nHispanic Females\nNative Females", "Select", "Back");
}
if(dialogid==2 && response)
{
switch(listitem)
{
case 0:ShowPlayerDialog(playerid, 4, DIALOG_STYLE_LIST, "White Males","White Male 1\nWhite Male 2\nWhite Male 3","Select","Back");
case 1:ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Black Males","Black Male 1\nBlack Male 2\nBlack Male 3","Select","Back");
case 2:ShowPlayerDialog(playerid, 6, DIALOG_STYLE_LIST, "Oriental Males","Oriental Male 1\nOriental Male 2\nOriental Male 3","Select","Back");
case 3:ShowPlayerDialog(playerid, 7, DIALOG_STYLE_LIST, "Hispanic Males","Oriental Male 1\nOriental Male 2\nOriental Male 3","Select","Back");
case 4:ShowPlayerDialog(playerid, 8, DIALOG_STYLE_LIST, "Native Males","Oriental Male 1\nOriental Male 2\nOriental Male 3","Select","Back");
}
}
if(dialogid==3 && response)
{
switch(listitem)
{
case 0:ShowPlayerDialog(playerid, 9, DIALOG_STYLE_LIST, "White Females","White Male 1\nWhite Male 2\nWhite Male 3","Select","Back");
case 1:ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "Black Females","Black Male 1\nBlack Male 2\nBlack Male 3","Select","Back");
case 2:ShowPlayerDialog(playerid, 11, DIALOG_STYLE_LIST, "Oriental Females","Oriental Male 1\nOriental Male 2\nOriental Male 3","Select","Back");
case 3:ShowPlayerDialog(playerid, 12, DIALOG_STYLE_LIST, "Hispanic Females","Oriental Male 1\nOriental Male 2\nOriental Male 3","Select","Back");
case 4:ShowPlayerDialog(playerid, 13, DIALOG_STYLE_LIST, "Native Females","Oriental Male 1\nOriental Male 2\nOriental Male 3","Select","Back");
}
}
if(dialogid==4 && response)
{
switch(listitem)
{
case 0:
{
SetPlayerSkin(playerid,29);
ShowPlayerDialog(playerid, 14, DIALOG_STYLE_MSGBOX, "Skin Selection", "Choose this skin for this session?", "Yes", "No");
return 1;
}
case 1:
{
return 1;
}
case 2:
{
return 1;
}
case 3:
{
return 1;
}
case 4:
{
return 1;
}
}
}
if(dialogid==14 && response)
{
SpawnPlayer(playerid);
SetPlayerSkin(playerid,29);
}
else if (dialogid==14 && !response)
{
SetPlayerSkin(playerid,0);
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_LIST, "White Males","White Male 1\nWhite Male 2\nWhite Male 3","Select","Back");
}
return 0;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public OnPlayerText(playerid,text[])
{
new name[MAX_PLAYER_NAME], string[128];
GetPlayerRPName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s: %s", name, text);
SendLocalMessage(playerid, COLOR_WHITE, 7,string);
return 0;
}
http://forum.sa-mp.com/showthread.ph...ight=j.l.admin
I have to catch some sleep, so until morning, I will be eagerly awaiting a helping hand. Thank You!

