Poste bitte den Funktionen IsACop und IstInGangFight. Du kannst sie ja auch schon mal debuggen und gleich den Log mitposten, falls du das Prinzip verstanden hast.
In einer der beiden Funktionen ist der Fehler.
Beiträge von Jeffry
-
-
Ok, dann liegt es an was anderem. Da müssen wir uns langsam annähern.
Lass es so durchlaufen und poste den Log.
Code Function OnPlayerDeath(playerid, killerid, reason)
{
printf("OnPlayerDeath started: killerid = %d / playerid = %d / reason = %d", killerid, playerid, reason);
M_OnPlayerDeath(playerid,killerid,reason);
new name[MAX_PLAYER_NAME];
new string[256];
PlayerInfo[playerid][pInvWeapon] = 0;
PlayerInfo[playerid][pInvAmmo] = 0;
PlayerInfo[playerid][pInvWeapon2] = 0;
PlayerInfo[playerid][pInvAmmo2] = 0;
FrakMatsHolding[playerid] = 0;
printf("Step 1");
/*new playercash;
new victimteam;
new killerteam;*/
printf("Step 1.1");
if(PlayerInfo[playerid][pLevel] > 2 && KHSperre[playerid] == 0 && PlayerInfo[playerid][pJailed] == 0 && PlayerInfo[playerid][pGangJailed] == 0 && PlayerPaintballing[playerid] == 0)
{
printf("Step 1.2");
PlayerInfo[playerid][pTot] = 1;
}
printf("Step 1.3");
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;
}
}
}
printf("Step 1.4");
if(killerid != INVALID_PLAYER_ID)
{
printf("Step 1.5");
if (!IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))
{
printf("Step 1.5.2");
SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
}
printf("Step 1.6");
if (!IsACop(killerid) && reason == 49)
{
printf("Step 1.6.2");
SetPlayerCriminal(killerid,255, "Fahrerflucht");
}
}
printf("Step 1.7");
if(gPlayerUsingLoopingAnim[playerid])
{
printf("Step 1.8");
gPlayerUsingLoopingAnim[playerid] = 0;
printf("Step 1.9");
TextDrawHideForPlayer(playerid,txtAnimHelper);
}
printf("Step 2");
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;
}
printf("Step 3");
//=======================
//victimteam = gTeam[playerid];
//killerteam = gTeam[killerid];
gPlayerSpawned[playerid] = 0;
GetPlayerName(playerid, name, sizeof(name));
PlayerInfo[playerid][pLocal] = 255;
if(killerid != INVALID_PLAYER_ID)
{
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;
}
printf("Step 4");
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;
}
printf("Step 5");
ClearCrime(playerid);
printf("Step 6");
if(killerid != INVALID_PLAYER_ID)
{
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;
}
}
printf("Step 7");
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;
}
}
}
printf("Step 8");
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;
}
}
}
printf("Step 9");
if(IsPlayerConnected(killerid))
{
printf("Step 10");
if(!IsACop(killerid))
{
printf("Step 11");
WantedLevel[killerid] += 2;
SetPlayerWantedLevel(killerid,2);
SendClientMessage(killerid, COLOR_LIGHTRED, "Du hast ein Verbrechen begangen ( Mord ). Zeuge: Unbekannt.");
new message[128];
format(message, sizeof(message), "Vergebene Wanteds: 2. Neues Wantedlevel: %d", WantedLevel[killerid]);
SendClientMessage(killerid, COLOR_YELLOW, message);
new killername[MAX_PLAYER_NAME];
GetPlayerName(killerid,killername,sizeof(killername));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsACop(i))
{
SendClientMessage(i, TEAM_BLUE_COLOR, "HQ: Alle Einheiten: Reporter: Unbekannt, Vergebene Wanteds: 2");
format(string, sizeof(string), "HQ: Verbrechen: Mord, Gesuchter: %s, Aktuelle Wanteds: %d",killername, WantedLevel[killerid]);
SendClientMessage(i, TEAM_BLUE_COLOR, string);
}
}
}
}
printf("Step 12");
//GW_OnPlayerDeath(playerid, killerid, reason);
killerid = INVALID_PLAYER_ID;
SetPlayerColor(playerid,COLOR_GRAD2);
printf("OnPlayerDeath Ende.");
return 1;
}Falls es nach 1.3 endet, poste bitte die GetPlayerFaction Funktion, oder du debuggst es nach dem Schema wie ich es hier mache, dann kannst es selbst machen bis du die Zeile hast an der es endet.
-
Da hat die Abfrage auf "killerid != INVALID_PLAYERID" gefehlt.
Jetzt sollte es klappen. Wenn ja, kannst die prints natürlich wieder entfernen, ansonsten Log nochmal posten.Code Function OnPlayerDeath(playerid, killerid, reason)
{
printf("OnPlayerDeath started: killerid = %d / playerid = %d / reason = %d", killerid, playerid, reason);
M_OnPlayerDeath(playerid,killerid,reason);
new name[MAX_PLAYER_NAME];
new string[256];
PlayerInfo[playerid][pInvWeapon] = 0;
PlayerInfo[playerid][pInvAmmo] = 0;
PlayerInfo[playerid][pInvWeapon2] = 0;
PlayerInfo[playerid][pInvAmmo2] = 0;
FrakMatsHolding[playerid] = 0;
printf("Step 1");
/*new playercash;
new victimteam;
new killerteam;*/
if(PlayerInfo[playerid][pLevel] > 2 && KHSperre[playerid] == 0 && PlayerInfo[playerid][pJailed] == 0 && PlayerInfo[playerid][pGangJailed] == 0 && PlayerPaintballing[playerid] == 0)
{
PlayerInfo[playerid][pTot] = 1;
}
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(killerid != INVALID_PLAYER_ID)
{
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;
TextDrawHideForPlayer(playerid,txtAnimHelper);
}
printf("Step 2");
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;
}
printf("Step 3");
//=======================
//victimteam = gTeam[playerid];
//killerteam = gTeam[killerid];
gPlayerSpawned[playerid] = 0;
GetPlayerName(playerid, name, sizeof(name));
PlayerInfo[playerid][pLocal] = 255;
if(killerid != INVALID_PLAYER_ID)
{
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;
}
printf("Step 4");
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;
}
printf("Step 5");
ClearCrime(playerid);
printf("Step 6");
if(killerid != INVALID_PLAYER_ID)
{
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;
}
}
printf("Step 7");
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;
}
}
}
printf("Step 8");
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;
}
}
}
printf("Step 9");
if(IsPlayerConnected(killerid))
{
printf("Step 10");
if(!IsACop(killerid))
{
printf("Step 11");
WantedLevel[killerid] += 2;
SetPlayerWantedLevel(killerid,2);
SendClientMessage(killerid, COLOR_LIGHTRED, "Du hast ein Verbrechen begangen ( Mord ). Zeuge: Unbekannt.");
new message[128];
format(message, sizeof(message), "Vergebene Wanteds: 2. Neues Wantedlevel: %d", WantedLevel[killerid]);
SendClientMessage(killerid, COLOR_YELLOW, message);
new killername[MAX_PLAYER_NAME];
GetPlayerName(killerid,killername,sizeof(killername));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsACop(i))
{
SendClientMessage(i, TEAM_BLUE_COLOR, "HQ: Alle Einheiten: Reporter: Unbekannt, Vergebene Wanteds: 2");
format(string, sizeof(string), "HQ: Verbrechen: Mord, Gesuchter: %s, Aktuelle Wanteds: %d",killername, WantedLevel[killerid]);
SendClientMessage(i, TEAM_BLUE_COLOR, string);
}
}
}
}
printf("Step 12");
//GW_OnPlayerDeath(playerid, killerid, reason);
killerid = INVALID_PLAYER_ID;
SetPlayerColor(playerid,COLOR_GRAD2);
printf("OnPlayerDeath Ende.");
return 1;
} -
Sollte kein Problem sein. Ich stelle mal die Behauptung auf, dass es bis 100 Plätze auslesen noch ohne Lags geht. Hängt natürlich vom Server ab, aber sollte keine Probleme geben. Mit 10 ist es überhaupt kein Problem, das wird klappen.
Falls noch Fragen sind, oder Probleme am Code, kannst du gerne fragen. -
Lass es mal so laufen, und poste dann was im Server Log steht, wenn du kein Wanted bekommst.
Spoiler anzeigen Function OnPlayerDeath(playerid, killerid, reason)
{
printf("OnPlayerDeath started: killerid = %d / playerid = %d / reason = %d", killerid, playerid, reason);
M_OnPlayerDeath(playerid,killerid,reason);
new name[MAX_PLAYER_NAME];
new string[256];
PlayerInfo[playerid][pInvWeapon] = 0;
PlayerInfo[playerid][pInvAmmo] = 0;
PlayerInfo[playerid][pInvWeapon2] = 0;
PlayerInfo[playerid][pInvAmmo2] = 0;
FrakMatsHolding[playerid] = 0;
printf("Step 1");
/*new playercash;
new victimteam;
new killerteam;*/
if(PlayerInfo[playerid][pLevel] > 2 && KHSperre[playerid] == 0 && PlayerInfo[playerid][pJailed] == 0 && PlayerInfo[playerid][pGangJailed] == 0 && PlayerPaintballing[playerid] == 0)
{
PlayerInfo[playerid][pTot] = 1;
}
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;
TextDrawHideForPlayer(playerid,txtAnimHelper);
}
printf("Step 2");
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;
}
printf("Step 3");
//=======================
//victimteam = gTeam[playerid];
//killerteam = gTeam[killerid];
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;
}
printf("Step 4");
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;
}
printf("Step 5");
ClearCrime(playerid);
printf("Step 6");
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;
}
printf("Step 7");
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;
}
}
}
printf("Step 8");
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;
}
}
}
printf("Step 9");
if(IsPlayerConnected(killerid))
{
printf("Step 10");
if(!IsACop(killerid))
{
printf("Step 11");
WantedLevel[killerid] += 2;
SetPlayerWantedLevel(killerid,2);
SendClientMessage(killerid, COLOR_LIGHTRED, "Du hast ein Verbrechen begangen ( Mord ). Zeuge: Unbekannt.");
new message[128];
format(message, sizeof(message), "Vergebene Wanteds: 2. Neues Wantedlevel: %d", WantedLevel[killerid]);
SendClientMessage(killerid, COLOR_YELLOW, message);
new killername[MAX_PLAYER_NAME];
GetPlayerName(killerid,killername,sizeof(killername));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsACop(i))
{
SendClientMessage(i, TEAM_BLUE_COLOR, "HQ: Alle Einheiten: Reporter: Unbekannt, Vergebene Wanteds: 2");
format(string, sizeof(string), "HQ: Verbrechen: Mord, Gesuchter: %s, Aktuelle Wanteds: %d",killername, WantedLevel[killerid]);
SendClientMessage(i, TEAM_BLUE_COLOR, string);
}
}
}
}
printf("Step 12");
//GW_OnPlayerDeath(playerid, killerid, reason);
killerid = INVALID_PLAYER_ID;
SetPlayerColor(playerid,COLOR_GRAD2);
printf("OnPlayerDeath Ende.");
return 1;
} -
Das ist nicht das was wir brauchen.
Poste dein gesamtes OnPlayerDeath, dort gibst du ja schließlich das WantedLevel. -
In deinem GameMode:
forward GetDeathStatus(playerid);
public GetDeathStatus(playerid)
{
return SpielerTot[playerid]; //So wie eben die Variable heißt.
}Im FilterScript:
new ist_tot = CallRemoteFunction("GetDeathStatus", "d", playerid);ist_tot hat dann den Wert von SpielerTot[playerid].
-
XHSD:
Zum Beispiel mit sscanf, oder so: MYSQL Lädt falsche werte
str sieht genau so aus wie string in dem Beispiel von mir. (Reihenfolge ist wohl anders.)----------------------------------------------------------------------------------------------------
Den Rang kannst du so nur schwer festlegen. Ich zeige dir mal wie es gehen kann, aber das ist nicht sehr performant (für das Limit 10 geht's noch, aber wenn du es für alle machen willst, und mal 1000 Users hast, kannste das vergessen, da würde ich dir vorschlagen, ab Rang 10 in den Stats zu sagen: Schlechter als 10.)
Code new rank;
mysql_query("SELECT name, kills FROM accounts ORDER BY kills DESC LIMIT 10");
mysql_store_result();
if(mysql_num_rows())
{
new str[256];
while(mysql_fetch_row(str))
{
rank++;
print(str);
//hier dann den "str" splitten, so wie du es brauchst."
//wenn du es gesplittest hast, und der Name des Users steht im String "name":
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && !strcmp(SpielerName(i), name))
{
Rang[i] = rank;
}
}
}
}
mysql_free_result();Alternative: http://stackoverflow.com/quest…-row-position-in-order-by
--------------------------------------------------------------------------------
Ja, das LIMIT bezeichnet die Anzahl der Plätze die du ausließt. In dem Fall 1,2,3,4,5,6,7,8,9,10.
-
-
Dann debugge den Code manuell. Zwischen jede Zeile in LoadPlayer einen print mit einer Zahl setzen. Da wo es endet ist der Fehler.
-
Dann schalte doch mal den MySQL Debug an und poste was im Log steht wenn du das richtige Passwort eingibst. Wie du das machst siehst du hier: Tipps: Scripting-Probleme richtig erklären Kapitel 1.4
-
Filterscripts im Server? Wenn ja, nimm die raus und prüfe ob es dann geht.
Wenn nicht, liegt es am OnDialogResponse in deinem Gamemode. Allgemeine Fehler gibt es nicht, es ist ein Fehler einem der Codes. -
Hiermit könnte die Position auszulesen sein:
http://forum.sa-mp.com/showthread.php?t=164251Vielleicht geht es auch damit:
http://wiki.sa-mp.com/wiki/GetVehicleModelInfo -
Das ist mir schon klar. Aber du willst doch in der Nähe von bestimmten Objekten sein. Welche Objekte? Und wie erstellst du diese?
-
Wie erstellst du diese Objekte, denen du nahe sein willst, denn? Poste den Teil mal.
-
Du musst hier auch die Koordinaten vom ersten Objekt nehmen, aber der Stufe 2.
Also nicht für x
-129.56030
machensondern
-140.72079
(X Koordinate des ersten Objekts)Ebenso bei y und z, die Werte des ersten Objekts abziehen.
-
Poste bitte den Code wie du das Objekt an dem der Spieler sein muss erstellst, und den Code mit dem du abfragst, ob der Spieler in der Nähe diese Objekts ist.
-
Eigentlich müsste dir der Server abstürzen. Der Text darf nicht leer sein: http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw
CreatePlayerTextDraw(playerid, 228.587768, 294.333557, "");
Zu
CreatePlayerTextDraw(playerid, 228.587768, 294.333557, "_");
Für alle vier natürlich.Wenn es immer noch nicht geht, hast du viele Textdraws im Server? Limit erreicht?
-
KillsTD war doch nur ein Beispiel.
new string[20];
format(string, sizeof(string), "Kills: %d", Spieler[playerid][Kills]);
TextDrawSetString(Textdraw2[playerid], string);Musst natürlich deine Textdraws nehmen.
Der Code kannst du jetzt zum Beispiel in einen Timer setzen oder mit killerid anstatt playerid unter OnPlayerDeath setzen. -
Wisst ihr, jeder Scripter hat mal klein angefangen.
Einen Editor zu bedienen hat aber nichts mit scripten zu tun.Du könntest etwas Eigeninitiative zeigen und nicht sofort sagen, dass du es nicht kannst. Beim Scripten kann man dir gerne helfen, aber einen Editor zu bedienen, das solltest du schon selbst können. Versuche es einfach mal.