Hey,
aus irgendeinem Grund klappen die Funktionen bei OnPlayerDeath garnicht.
Wenn ich z.B einen Spieler mit /explode töte, dann klappt wunderbar die Medic-Funktion.
Jedoch wenn ich einen Spieler normal töte, kriege ich keine Wanteds etc.
Weiß jemand an was dies liegen könnte? Der Kill wird sozusagen iwie nicht erkannt...
Hier mein kompletter OPD-Code :
Code
public OnPlayerDeath(playerid, killerid, reason)
{
SetPVarInt(playerid, "ImHaus", -1);
spv(playerid,"Carrying",0);
spv(playerid,"Grabbed",0);
spv(playerid,"Cuffed",0);
//*************************************************************************
//Tot-Position abfragen & speichern
new Float:ppos[3];
GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
pTotPos[playerid][0]=ppos[0];
pTotPos[playerid][1]=ppos[1];
pTotPos[playerid][2]=ppos[2];
//*************************************************************************
//Bank-System abbrechen (wenn) und Fahrschule ebenso
IstInBank[playerid]=false;
if(InFahrschule[playerid])
{
SetVehicleToRespawn(JobCar[playerid]);
JobCar[playerid]=INVALID_VEHICLE_ID;
FahrschulCP[playerid]=0;
InFahrschule[playerid]=false;
}
//*************************************************************************
//In Animation
if(InAnim[playerid]==1)
{
InAnim[playerid]=0;
StopLoopingAnim(playerid);
TextDrawHideForPlayer(playerid,txtAnimHelper);
}
//Gang-War Kill System
for(new i=0; i<sizeof(GangZoneInfo); i++)
{
if(!IsPlayerInGangZone(killerid, i))continue;
if(!GangZoneInfo[i][inwar])continue;
for(new gw=0; gw<sizeof(GangWarInfo); gw++)
{
if(GangWarInfo[gw][zoneid]!=i)continue;
if(pInfo[killerid][fraktion]==GangWarInfo[gw][angreifer])GangWarInfo[gw][kills_angreifer]++;
else if(pInfo[killerid][fraktion]==GangZoneInfo[i][gzowner])GangWarInfo[gw][kills_owner]++;
break;
}
break;
}
//Anrufen abbrechen
if(isAmTelen[playerid])
{
if(Call_Anrufer[playerid]!=-1)
{
if(!PlayerOnline(Call_Anrufer[playerid]))return 1;
SendClientMessage(Call_Anrufer[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
isAmTelen[Call_Anrufer[playerid]]=0;
Call_Anrufer[playerid]=-1;
}
else if(Call_Anrufen[playerid]!=-1)
{
if(!PlayerOnline(Call_Anrufen[playerid]))return 1;
SendClientMessage(Call_Anrufen[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
isAmTelen[Call_Anrufen[playerid]]=0;
Call_Anrufen[playerid]=-1;
pInfo[playerid][handykarte]-=gpv(playerid,"MussTeleZahlen");
}
isAmTelen[playerid]=0;
}
if(killerid!=INVALID_PLAYER_ID)
{
if(!PlayerOnline(killerid))return 1;
if(pInfo[killerid][fraktion]!=2 && pInfo[killerid][fraktion]!=3)return 1;
if(Robber[playerid]==1)
{
Robber[playerid]=0;
BankIsRobbed=0;
BankRobbed=1;
new str[128];
format(str,sizeof(str),"* Der Räuber %s wurde vom Beamten %s getötet. Der Bankraub ist gescheitert.",PlayerName(playerid), PlayerName(killerid));
SendClientMessageToAll(HBLAU,str);
SetTimer("BankRobReset", 10800*1000, false);
}
}
if(Robber[playerid]==1)
{
Robber[playerid]=0;
BankIsRobbed=0;
BankRobbed=1;
new str[128];
format(str,sizeof(str),"* Der Bankräuber %s wurde getötet. Der Bankraub ist gescheitert.",PlayerName(playerid), PlayerName(killerid));
SendClientMessageToAll(HBLAU,str);
SetTimer("BankRobReset", 10800*1000, false);
}
//Wanteds geben
if(PlayerOnline(killerid))
{
SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+2);
SendClientMessage(killerid, DROT, "* Du hast ein Verbrechen begangen: Mord.");
new infostr[128];
format(infostr,sizeof(infostr),"Dein Wantedlevel: %d", wanteds[killerid]);
SendClientMessage(killerid, GELB, infostr);
new meldung[128], zne[64];
GetPlayer3DZone(killerid, zne, sizeof(zne));
format(meldung,sizeof(meldung),"* Meldung: Verdächtiger %s, Verbrechen: Mord in %s.",PlayerName(killerid), zne);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!PlayerOnline(i))continue;
if(pInfo[i][fraktion]!=2 && pInfo[i][fraktion]!=3)continue;
SendClientMessage(i, 0xFFCF91FF, meldung);
}
}
//Taxi Fahrer
if(IsTaxi[playerid]==1)
{
SetVehicleToRespawn(JobCar[playerid]);
Delete3DTextLabel(vehicle3Dtext[JobCar[playerid]]);
IsTaxi[playerid]=0;
TaxiKosten[playerid]=0;
TaxiSitz[playerid][0]=0;
TaxiSitz[playerid][1]=0;
TaxiSitz[playerid][2]=0;
Taxameter[playerid][0]=0;
Taxameter[playerid][1]=0;
Taxameter[playerid][2]=0;
TaxiSekunden[playerid][0]=0;
TaxiSekunden[playerid][1]=0;
TaxiSekunden[playerid][2]=0;
}
//*************************************************************************
//Ins Krankenhaus + Timer berechnung ob mehr als 3 Medics on sind, um länger oder kürzer ins KH zu schicken.
//Tot Pickup und Zeugensystem
new count=0;
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!PlayerOnline(i))continue;
if(pInfo[i][fraktion]!=5)continue;
count++;
}
pInfo[playerid][tot]=1;
if(count>3)pInfo[playerid][totsek]=180;
else pInfo[playerid][totsek]=60;
new basic_floats;
IstTot[playerid]=true;
GetPlayerPos(playerid,x,y,z);
new str[230],Hour, Minute, Second,zeuge[10*MAX_PLAYER_NAME+20], zcount=0;
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!PlayerOnline(i))continue;
if(!IsPlayerInRangeOfPoint(i,20.0,x,y,z))continue;
if(GetPlayerState(playerid)==PLAYER_STATE_SPECTATING)continue;
if(i==playerid || i==killerid)continue;
zcount++;
if(zcount<2)format(zeuge,sizeof(zeuge),"%s",PlayerName(i));
else format(zeuge,sizeof(zeuge),"%s / %s",zeuge, PlayerName(i));
}
gettime(Hour, Minute, Second);
format(str,sizeof(str),"† %s †\n%02d:%02d:%02d\nZeuge: %s", PlayerName(playerid),Hour, Minute, Second,zeuge);
if(killerid!=INVALID_PLAYER_ID && pInfo[killerid][fraktion]==2)format(str,sizeof(str),"† %s †\n%02d:%02d:%02d", PlayerName(playerid),Hour, Minute, Second,zeuge);
TotLabel[playerid]=Create3DTextLabel(str,WEIß,x,y,z,6.0, GetPlayerVirtualWorld(playerid),0);
TotPickup[playerid]=CreatePickup(1254,1,x,y,z,-1);
//*************************************************************************
//Wenn keine Wanteds, eine Meldung an Medics rausgeben.
if(GetPlayerWantedLevel(playerid)==0)
{
new zone[MAX_ZONE_NAME];
GetPlayer2DZone(playerid, zone, MAX_ZONE_NAME);
format(str,sizeof(str),"* Der Spieler %s benötigt einen Krankenwagen in %s. (/medic %i) Noch ca. %i Sekunden",PlayerName(playerid),zone,playerid,pInfo[playerid][totsek]);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(pInfo[i][fraktion]!=6)continue;
SendClientMessage(i,0xFFCF97FF,str);
}
}
//*************************************************************************
//Mode dem Killer hinzu setzen und wenn er wanteds hat, in den Knast.
//Und dem player die Tode hinzu setzen
if(killerid!=INVALID_PLAYER_ID && killerid != playerid && AdminDuty[killerid]==0)
{
pInfo[killerid][morde]++;
}
if(killerid!=INVALID_PLAYER_ID)
{
if(pInfo[killerid][fraktion]==2 || pInfo[killerid][fraktion]==3)
{
if(GetPlayerWantedLevel(playerid)!=0)
{
pInfo[playerid][inknast]=1;
pInfo[playerid][knasttime]=GetPlayerWantedLevel(playerid) * minprowanted;
pInfo[killerid][payday]+=1500;
FrakInfo[pInfo[playerid][fraktion]][kasse]-=1500;
ac_GivePlayerMoney(playerid, -GetPlayerWantedLevel(playerid)*1000);
SetPlayerWantedLevel(playerid,0);
}
}
}
pInfo[playerid][tode]++;
return 1;
}
Alles anzeigen