Hi,
habe mir mal ein kleines Jobsystem geschrieben, mit dem man per Befehl User bei bestimmten Jobs einstellen kann feuern und das man in Dienst gehen kann. So mein Problem: Ich gebe im SPiel zB ein /asetjob 0 (Meine ID) 2 (Jobid) 1 (Level)
Dann wird in der Userdatei die entsprechenden Sache eingetragen.
if(strcmp(cmd, "/asetjob", true) == 0)
{
if(AccountInfo[playerid][AdminLevel] >=3 || IsPlayerAdmin(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, ORANGE, "Benutze: /asetjob [Playerid] [Jobid] [Level 1-2]");
return 1;
}
new giveplayerid = ReturnUser(tmp, playerid);
tmp = strtok(cmdtext, idx);
new jobid = strval(tmp);
tmp = strtok(cmdtext, idx);
new level = strval(tmp);
if(giveplayerid != INVALID_PLAYER_ID)
{
if(jobid == 1)
{
if(level == 1)
{
GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Administrator %s hat dich zum Polizist gemacht!", sendername);
SendClientMessage(giveplayerid, LIGHTBLUE, string);
format(string, sizeof(string), "Du hast %s zum Polizist gemacht!", giveplayername);
SendClientMessage(playerid, LIGHTBLUE, string);
AccountInfo[giveplayerid][HjobLevel] = level;
AccountInfo[giveplayerid][Hjob] = 1;
//OnPlayerUpdateAccount(playerid);
}
if(level == 2)
{
GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Administrator %s hat dich zum Chef des SAPD gemacht!", sendername);
SendClientMessage(giveplayerid, LIGHTBLUE, string);
format(string, sizeof(string), "Du hast %s zum Chef des SAPD gemacht!", giveplayername);
SendClientMessage(playerid, LIGHTBLUE, string);
AccountInfo[giveplayerid][HjobLevel] = level;
AccountInfo[giveplayerid][Hjob] = 1;
//OnPlayerUpdateAccount(playerid);
}
}
U.S.W
Dann habe ich zB beim Krankenhaus in LS einen Pickup ohne Funktion. Dann einen Timer drin der alle paar Sekunden abfrägt ob jmd im Pickup steht und/oder in Dienst ist oder nicht. Das passiert hier:
public JobCheck(playerid)
{
//LSPD
if(PlayerToPoint(1.0, playerid, 1580.0464,-1635.0250,13.5613))
{
if(AccountInfo[playerid][Hjob] == 1)
{
if(AccountInfo[playerid][JobActive] == 0)
{
SetPlayerSkin(playerid, 280);
SetPlayerColor(playerid, 0x375FFFFF);
AccountInfo[playerid][JobActive] = 1;
GivePlayerWeapon(playerid, 334, 1);
GivePlayerWeapon(playerid, 348, 60);
return 1;
}
else
{
SetPlayerSkin(playerid, AccountInfo[playerid][Skin]);
SetPlayerColor(playerid, 0xFFFFFFFF);
AccountInfo[playerid][JobActive] = 0;
GivePlayerWeapon(playerid, 334, -1);
GivePlayerWeapon(playerid, 348, -60);
return 1;
}
}
}
//SFPD
if(PlayerToPoint(1.0, playerid, -1593.1597,716.1147,-5.2422))
{
if(AccountInfo[playerid][Hjob] == 1)
{
if(AccountInfo[playerid][JobActive] == 0)
{
SetPlayerSkin(playerid, 281);
SetPlayerColor(playerid, 0x375FFFFF);
AccountInfo[playerid][JobActive] = 1;
GivePlayerWeapon(playerid, 334, 1);
GivePlayerWeapon(playerid, 348, 60);
return 1;
}
else
{
SetPlayerSkin(playerid, AccountInfo[playerid][Skin]);
SetPlayerColor(playerid, 0xFFFFFFFF);
AccountInfo[playerid][JobActive] = 0;
GivePlayerWeapon(playerid, 334, -1);
GivePlayerWeapon(playerid, 348, -60);
return 1;
}
}
}
U.S.W ...
So, sobald ich nun den Befehl eingegeben habe kann ich zB als Sanitäter in Dienst gehen, bekomme meinen Skin etc..
Wenn ich nun RC mache und wieder in Dienst gehen will geht es nicht mehr obwohl in der Userdatei immernoch genau das steht was ich dafür brauche.
Fehlt da irgendwas oder ist was falsch?
Viele Grüße
samu