Hallo
Ich habe mal eine kleine Sache gescriptet, woran man den Tod des Players rausfinden kann.
Doch wenn ich den Spieler untersuchen will, dann kommt immer der eine Grund.
Es ist immer Tod durch erschlagen. Auch wenn ich auf den Spieler schiesse, ist es trotzdem Tod durch erschlagen
und ich möchte nun mal freien Tisch machen und es nun einmal entbuggen, wenns möglich ist mit eurer hilfe.
Sone Sachen wie von MrM oder so möchte ich gar nicht hören, also lassen wir das Thema mal bei seite.
OnPlayerDeath System.
public OnPlayerDeath(playerid, killerid, reason)
{
M_OnPlayerDeath(playerid,killerid,reason);
new name[MAX_PLAYER_NAME];
new string[256];
IntEnforcer[playerid] = 0;
IntCargo[playerid] = 0;
PlayerInfo[playerid][pInvWeapon] = 0;
PlayerInfo[playerid][pInvAmmo] = 0;
PlayerInfo[playerid][pInvWeapon2] = 0;
PlayerInfo[playerid][pInvAmmo2] = 0;
FrakMatsHolding[playerid] = 0;
/*new playercash;
new victimteam;
new killerteam;*/
SetPVarInt(killerid,"Mörder",1);
SetPVarInt(killerid,"Killt",playerid);
if(GetPlayerLevel(playerid) <= 3)
{
if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID)
{
SendClientMessage(killerid,0xBC0000C8,"Du hast einen Level 1/2er getötet, daher wurde eine Nachricht an das Adminteam gesendet.");
format(string,sizeof(string),"Anti-Newbie-Kill: %s ist durch %s als Level %i´er gestorben.",MeinName(playerid),MeinName(killerid),GetPlayerLevel(playerid));
ABroadCast(0x00489184,string,1);
}
SendClientMessage(playerid,0xBC0000C8,"Du bist als Neuling gestorben und spawnst anschließend.");
return 1;
}
if(AdminDuty[playerid]==1)
{
if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID)
{
SendClientMessage(killerid,0xBC0000C8,"Du hast soeben einen Admin im Admindienst getötet.");
format(string,sizeof(string),"Anti-Admin-Kill: %s hat dich im Admindienst getötet.",MeinName(killerid));
SendClientMessage(playerid,0x00489184,string);
}
SendClientMessage(playerid,0xBC0000C8,"Du bist als Admin im Admindienst gestorben und spawnst anschließend.");
return 1;
}
if(PlayerInfo[playerid][pLevel] > 2 && KHSperre[playerid] == 0 && PlayerInfo[playerid][pJailed] == 0 && PlayerInfo[playerid][pGangJailed] == 0 && PlayerPaintballing[playerid] == 0 && AdminDuty[playerid] == 0)
{
new Float:xc,Float:yc,Float:zc;
GetPlayerPos(playerid,xc,yc,zc);
TotX[playerid]=xc;
TotY[playerid]=yc;
TotZ[playerid]=zc;
totinterior[playerid]=GetPlayerInterior(playerid);
totvirtual[playerid]=GetPlayerVirtualWorld(playerid);
PlayerInfo[playerid][pTot] = 1;
SetPVarInt(playerid,"death_reason",reason);
SetTimer("FreezeTodTimer",5000,0);
}
for(new fs;fs<sizeof(FightSystem);fs++){
if(FightSystem[fs][fsFightTime]){
if(GetPlayerFaction(playerid) == FightSystem[fs][fsOwnerFaction]||
GetPlayerFaction(playerid) == FightSystem[fs][fsAttackFaction]) {
PlayerInfo[playerid][pTot] = 0;
}
}
}
if (!IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))
{
SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
}
if (!IsACop(killerid) && reason == 49)
{
SetPlayerCriminal(killerid,255, "Fahrerflucht");
}
if(gPlayerUsingLoopingAnim[playerid])
{
gPlayerUsingLoopingAnim[playerid] = 0;
}
if(BlindFold[playerid] == 1)
{
BlindFold[playerid] = 0;
}
if(PlayerInfo[playerid][pMauled] == 1)
{
PlayerInfo[playerid][pMauled] = 0;
}
InCargo[playerid] = 0; InLevi[playerid] = 0; InEnfo[playerid] = 0;
if(FirstSpawn[playerid] == 1)
{
FirstSpawn[playerid] = 0;
}
if(IsBlacklist[playerid]==1)
{
ClearBlack(playerid);
IsBlacklist[playerid]=0;
}
gPlayerSpawned[playerid] = 0;
GetPlayerName(playerid, name, sizeof(name));
PlayerInfo[playerid][pLocal] = 255;
if(killerid != 255)
if(reason == 38)
{
new kstring[128];
new kickname[MAX_PLAYER_NAME];
if(IsPlayerConnected(killerid))
{
GetPlayerName(killerid, kickname, sizeof(kickname));
format(string, 256, "Warnung: [%d]%s hat einen Spieler mit einer Minigun gekillt. ACHTUNG [CheatVerdacht].",killerid,kickname);
ABroadCast(COLOR_YELLOW,string,1);
printf("%s", kstring);
}
}
if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
{
DisablePlayerCheckpoint(playerid);
gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
}
new caller = Mobile[playerid];
if(caller != 255)
{
if(caller < 255)
{
SendClientMessage(caller, COLOR_GRAD2, " Die Verbindung wurde unterbrochen....");
CellTime[caller] = 0;
CellTime[playerid] = 0;
Mobile[caller] = 255;
}
Mobile[playerid] = 255;
CellTime[playerid] = 0;
}
ClearCrime(playerid);
if(PlayerPaintballing[playerid] != 0)
{
PlayerPaintballKills[killerid] ++;
if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
{
new killer[MAX_PLAYER_NAME];
PaintballWinner = killerid;
PaintballWinnerKills = PlayerPaintballKills[killerid];
GetPlayerName(killerid, killer, sizeof(killer));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerPaintballing[i] != 0)
{
format(string, sizeof(string), "* %s ist mit %d Kills in Führung.",killer,PaintballWinnerKills);
SendClientMessage(i, COLOR_WHITE, string);
}
}
}
}
return 1;
}
if(GettingCK[playerid] < 999 || OnCK[playerid] < 999)
{
if(IsPlayerConnected(killerid))
{
if(GettingCK[killerid] < 999 || OnCK[playerid] < 999)
{
new killer[MAX_PLAYER_NAME];
new dier[MAX_PLAYER_NAME];
GetPlayerName(playerid, dier, sizeof(dier));
GetPlayerName(killerid, killer, sizeof(killer));
format(string, sizeof(string), "* %s hat deinen Charakter gesperrt, du kannst nun mit diesem Charakter nicht mehr Spielen.",killer);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "** %s hat den Spieler %s erledigt**",killer,dier);
CKLog(string);
PlayerInfo[playerid][pCK] = 1;
if(GettingCK[playerid] < 999) { GettingCK[playerid] = 999; }
else if(OnCK[playerid] < 999) { OnCK[playerid] = 999; }
if(GettingCK[killerid] < 999) { GettingCK[killerid] = 999; }
else if(OnCK[killerid] < 999) { OnCK[killerid] = 999; }
KickPlayer[playerid] = 1;
}
}
}
if(PlayerInfo[playerid][pHeadValue] > 0)
{
if(IsPlayerConnected(killerid))
{
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
{
ConsumingMoney[killerid] = 1;
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
//new fkasse = PlayerInfo[playerid][pHeadValue]/2;
//FraktionsKasse[7] += fkasse;
//GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2);
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2);
SendFamilyMessage(8, COLOR_YELLOW, string);
PlayerInfo[playerid][pHeadValue] = 0;
}
}
}
GW_OnPlayerDeath(playerid, killerid, reason);
killerid = INVALID_PLAYER_ID;
SetPlayerColor(playerid,COLOR_GRAD2);
return 1;
}
Es bezieht sich auf diese Funktion.
SetPVarInt(playerid,"death_reason",reason);
Das soll eigentlich der Grund reingespeichert werden, tut er aber glaube ich nicht.
Vielleicht habe ich den falsch eingefügt. Ich weiss es nicht.
Nunja hier mal der Befehl.
ocmd:auntersuchen(playerid,params[])
{
new i,string[128];
if(PlayerInfo[i][pAdmin]<2)return ErrorMsg(playerid,"Wenn du wissen willst woran das Opfer gestorben ist, dann frag einen Medic.");
if(sscanf(params,"u",i))return ErrorMsg(playerid,"Verwendung: /auntersuchen [playerid]");
if(!IsPlayerConnected(i))return 1;
if(PlayerInfo[i][pTot]==0)return 1;
new tmpreason[64];
switch(GetPVarInt(i,"death_reason"))
{
case 255: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Verhungern";}
case 51: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Explosion";}
case 50: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Rotorblätter";}
case 49: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Kollision mit Fahrzeug";}
case 0: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Erschlagen";}
case 53: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Ertrunken";}
case 54: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Sturz";}
default: {SetPVarInt(i,"kann_revivt_werden",0);format(tmpreason,sizeof(tmpreason),"Waffenengewalt (%s:%i)",getWeaponName(GetPVarInt(i,"death_reason")),GetPVarInt(i,"death_reason"));}
}
format(string,sizeof(string),"Du hast %s untersucht. Diagnose: Tod durch %s.",MeinName(i),tmpreason);
SendClientMessage(playerid,0x23BE00FF,string);
format(string,sizeof(string),"Du wurdest vom Admin %s untersucht. Diagnose: Tod durch %s.",MeinName(playerid),tmpreason);
SendClientMessage(i,0x23BE00FF,string);
return 1;
}
Und hier dran liegts.
Es wird nur das ausgegeben.
case 0: {SetPVarInt(i,"kann_revivt_werden",1);tmpreason="Erschlagen";}
Hilfe