Wie ich es gesagt hatte. Lebenswichtig ist bei [killerid] abfragen IMMER:
if(killerid != INVALID_PLAYER_ID)
public OnPlayerDeath(playerid, killerid, reason)
{
GivePM(playerid,100);
SetPVarInt(playerid,"mech_dienst",0);
SetPVarInt(playerid,"pizza_dienst",0);
SetPVarInt(playerid,"farm_dienst",0);
SetPVarInt(playerid,"taxiduty",0);
SetPVarInt(playerid, "d_dienst", 0);
SetPVarInt(playerid, "m_dienst", 0);
SetPVarInt(playerid, "dienst", 0);
SetPVarInt(playerid, "fdienst", 0);
LoseProperty(playerid);
SetPVarInt(playerid,"Dead",1);
lastkillerID[playerid] = killerid;
if(pVars[playerid][Auswahl] == 1)return 0;
if(killerid != INVALID_PLAYER_ID)
{
if(pInfo[killerid][Fraktion] != 4 && pInfo[killerid][Fraktion] != 9)
{
new Zeuge = GetNearestPlayer(killerid,25.0);
if(Zeuge != -1 && pInfo[killerid][Fraktion] > 0 && pInfo[Zeuge][Fraktion] != pInfo[killerid][Fraktion])
{
new str3[128],strZ[128];
new grund[128] = "Mord";
pInfo[killerid][lastreason] = grund;
format(strZ,sizeof(strZ),"Du hast ein Verbrechen [Mord] begangen - Zeuge: %s",SpielerName[Zeuge]);
format(str3,sizeof(str3),"Aktuelles Wantedlevel: %i",pInfo[killerid][Wanteds]);
SendClientMessage(killerid,0xFFFA00FF,str3);
SendClientMessage(killerid,COLOR_RED,strZ);
SendCrimeMessageEx("[HQ] Verbrechen: {FF9933}%s hat einen Mord begangen, Zeuge: %s",SpielerName[killerid],SpielerName[Zeuge]);
new Wantedsterne = GetPlayerWantedLevel(killerid);
SetPlayerWantedLevel(killerid,Wantedsterne+1);
pInfo[killerid][Wanteds]++;
new Float:x,Float:y,Float:z;
GetPlayerPos(killerid,x,y,z);
SetCrimeMarker(x,y,z);
}
else SendClientMessage(killerid,COLOR_RED,"Du hast ein Verbrechen [Mord] begangen - Zeuge: Keiner");
}
else if(pInfo[killerid][Fraktion]==4 || pInfo[killerid][Fraktion]==9 && pInfo[playerid][Wanteds] > 0)
{
new Bonus = pInfo[playerid][Wanteds] * 1000;
pInfo[playerid][JailTime] = pInfo[playerid][Wanteds] * 60000 * 4;
GameTextForPlayer(killerid,"~g~Straftaeter getoetet",3000,3);
GivePM(killerid,Bonus/10);
FrakInfo[pInfo[playerid][Fraktion]][f_Kasse] += Bonus;
}
}
if(Spawned[playerid] == 1 && pInfo[playerid][JailTime] < 1 || killerid == INVALID_PLAYER_ID)
{
ResetPlayerWeapons(playerid);
new str[128];
format(str,sizeof(str),"Du bist im Krankenhaus~n~~g~Behandlung: ~r~%d Minuten",sVars[KrankenhausZeit]*1000/60000);
GameTextForPlayer(playerid,str,sVars[KrankenhausZeit]*1000,3);
SetTimerEx("KrankenhausTimer",sVars[KrankenhausZeit]*1000,0,"i",playerid);
TogglePlayerControllable(playerid, 0);
new Float:xx, Float:yy, Float:zz;
GetPlayerPos(playerid, xx, yy, zz);
if((xx > -992.5172 && xx < 4000.0000) && (yy < 528.0000 && yy > -4000.0000)) //Los Santos
{
KrankenhausLS[playerid] = 1;
SetPlayerPos(playerid,1162.871704, -1339.109619, 14.297291);
SetPlayerCameraPos(playerid, 1223.379028, -1333.354126, 33.809105);
SetPlayerCameraLookAt(playerid, 1178.824829, -1325.804077, 13.284119);
SetPlayerInterior(playerid, 0);
//Los Santos
}
if((xx > -4000.0000 && xx< -992.5172) && (yy < 4000.0000 && yy > -4000.0000)) //San Fierro
{
KrankenhausSF[playerid] = 1;
SetPlayerPos(playerid,1162.871704, -1339.109619, 14.297291);
SetPlayerCameraPos(playerid, -2452.4099,628.8833,64.9522);
SetPlayerCameraLookAt(playerid, -2618.7205,649.4597,67.2017);
SetPlayerInterior(playerid, 0);
//San Fierro
}
if((xx > -992.5172 && xx< 4000.0000) && (yy < 4000.0000 && yy > 528.0000)) //Las Venturas
{
KrankenhausLV[playerid] = 1;
SetPlayerPos(playerid,1162.871704, -1339.109619, 14.297291);
SetPlayerCameraPos(playerid,1617.1127,1889.3317,33.4111);
SetPlayerCameraLookAt(playerid,1607.3221,1818.3948,31.4688);
SetPlayerInterior(playerid, 0);
//Las Venturas
}
}
if(killerid != INVALID_PLAYER_ID)
{
if((GangWar[pInfo[playerid][Fraktion]][Gegner]==pInfo[killerid][Fraktion] && GangWar[pInfo[playerid][Fraktion]][Gegner]!=0) || (GangWar[pInfo[killerid][Fraktion]][Gegner]==pInfo[playerid][Fraktion] && GangWar[pInfo[killerid][Fraktion]][Gegner]!=0))
{
GameTextForPlayer(playerid,"~r~Gangwarkill",2000,6);
GameTextForPlayer(killerid,"~g~Gangwarkill",2000,6);
new frak = pInfo[killerid][Fraktion];
FrakInfo[frak][f_Kasse] += 200;
UpdateFrak(FrakInfo[frak][f_Kasse],GangWar[frak][Gegner],GangWar[frak][WarGrund],FrakInfo[frak][f_Gehalt],frak);
}
}
pInfo[playerid][MaskeOben]=0;
pInfo[playerid][Maske]=0;
RemovePlayerAttachedObject(playerid,1);
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i))
{
ShowPlayerNameTagForPlayer(i, playerid, 1);
}
}
return 1;
}
Wegen dem Problem des "nicht-spawnens":
Setze bei OnPlayerDeath KrankenhausLS[playerid] = 1 bei LS, = 2 bei SF und = 3 bei LV.
Bei OnPlayerSpawn:
if(Krankenhaus[playerid] == 1)
{
SetPlayerPos(playerid,1162.871704, -1339.109619, 14.297291);
SetPlayerCameraPos(playerid, 1223.379028, -1333.354126, 33.809105);
SetPlayerCameraLookAt(playerid, 1178.824829, -1325.804077, 13.284119);
SetPlayerInterior(playerid, 0);
}
if(Krankenhaus[playerid] == 2)
//usw...
Position bei OnPlayerDeath zu setzen ist schlecht, das geht nicht.