09.04.2016, 16:29
Hi. My callback OnPlayerDeath stop execute, for example: when a hitman kills somebody he don't get money on contract; people who have wanted don't get in jail if die near cop etc.
Код:
public OnPlayerDeath(playerid, killerid, reason) { if(killerid != INVALID_PLAYER_ID) { TogglePlayerSpectating(playerid, 0); if(InWar[playerid] == 0 && !IsACop(killerid)) { Urgenta[playerid] = 1; Infractor[playerid] = killerid; SetTimerEx("DispareInculpat", 60000, 0, "i", playerid); } if(GetDistanceBetweenPlayers(killerid,playerid) > 90 && reason != 34) { new string[128],gunname[50]; GetWeaponNameEx(reason,gunname,sizeof(gunname)); format(string,sizeof(string),"[AdmInfo]: %s killed %s form %.0f meters with %s.",GetName(killerid),GetName(playerid),GetDistanceBetweenPlayers(killerid,playerid),gunname); ABroadCast(0xf03337FF,string,1); } if(JoinedMotoCross[playerid] > 0) { JoinedMotoCross[playerid] = 0; InscrisiMotoCross--; CP[playerid] = 999; DisablePlayerRaceCheckpoint(playerid); } if(JoinedMaraton[playerid] > 0) { JoinedMaraton[playerid] = 0; InscrisiMaraton--; CP[playerid] = 999; DisablePlayerRaceCheckpoint(playerid); } new name[MAX_PLAYER_NAME]; new string[500]; new Float:px,Float:py,Float:pz; gPlayerUsingLoopingAnim[playerid] = 0; gPlayerSpawned[playerid] = 0; GetPlayerName(playerid, name, sizeof(name)); PlayerInfo[playerid][pLocal] = 255; GetPlayerPos(playerid, px, py, pz); new currentveh = GetPlayerVehicleID(playerid); //new strring[128]; //format(strring, sizeof(strring), "DEATH: %s was killed by %s with gun %d",name,GetName(killerid),reason); //SCM(killerid, -1, strring); curatj[playerid] = 0; if(JoinedDeathMatch[killerid] == 1 || JoinedDeathMatch[killerid] == 2) { return 1; } if(JoinedDeathMatch[playerid] > 0) { JoinedDeathMatch[playerid] = 0; SetPlayerSkin(playerid, PlayerInfo[playerid][pChar]); ResetPlayerWeapons(playerid); } if(CP[playerid] == 50) { CP[playerid] = 0; RemovePlayerAttachedObject(playerid,0); DisablePlayerCheckpoint(playerid); RemovePlayerAttachedObject(playerid,1); } if(CP[playerid] == 937) { CP[playerid] = 0; DisablePlayerCheckpoint(playerid); } if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER && !IsAPlane(currentveh)) { GetPlayerName(playerid,name,sizeof(name)); new kill[25]; GetPlayerName(killerid,kill,sizeof(kill)); format(string, sizeof(string), "[AdmInfo]: %s (%d) a fost omorat de %s (%d) (Drive-By)", name,playerid,kill,killerid); ABroadCast(0xf03337FF,string,1); } if(XDeaths[playerid] == 0) { LastDeath[playerid] = gettime(); } XDeaths[playerid]++; if(XDeaths[playerid] == 2) { if((gettime() - LastDeath[playerid]) <= 2) { Kick(playerid); return 1; }else if((gettime() - LastDeath[playerid]) > 2) { XDeaths[playerid]=0; } } if(killerid == playerid) { Kick(killerid); return 1; } if(PlayerCuffed2[playerid] == 1) { PlayerCuffed2[playerid] = 0; SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE); RemovePlayerAttachedObject(playerid,1); } if(PlayerInfo[killerid][pJailed] > 0) { format(string, sizeof(string), "[AdmInfo]: %s (%d) a fost omorat de puscariasul %s (%d)", GetName(playerid),playerid,GetName(killerid),killerid); ABroadCast(0xf03337FF,string,1); PlayerInfo[killerid][pJailTime] += 100; format(string, sizeof(string), "Ai primit +100 de secunde sub arestul politiei, deoarece l-ai omorat pe %s!", GetName(playerid)); SCM(killerid, -1, string); return 1; } if(reason == 38 && GetPlayerState(killerid) != PLAYER_STATE_DRIVER) { new kickname[25]; if(IsPlayerConnected(killerid)) { GetPlayerName(killerid, kickname, sizeof(kickname)); format(string, 256, "[AdmInfo]: [%d] %s a utilizat un mini-gun, verifica-l pentru suspiciunea de fake-kill",killerid,kickname); ABroadCast(0xf03337FF,string,1); } } if(TakingLesson[playerid] == 1) { TakingLesson[playerid] = 0; DisablePlayerCheckpoint(playerid); SetVehicleToRespawn(currentveh); } if(gPlayerUsingLoopingAnim[playerid]) { gPlayerUsingLoopingAnim[playerid] = 0; } if(PlayerInfo[playerid][pCarLicT] == 0 && PlayerInfo[playerid][pCarLic] == 1) { PlayerInfo[playerid][pCarLic] = 0; PlayerInfo[playerid][pCarLicT] = 0; new str[128]; format(str,128,"UPDATE users SET `CarLic`='0',`CarLicT`='0' WHERE `name`='%s'",PlayerInfo[playerid][pNames]); mysql_query(SQL,str); SCM(playerid,COLOR_GRAD1,"Ti-a expirat permisul de conducere!"); } if(PlayerInfo[playerid][pFlyLicT] == 0 && PlayerInfo[playerid][pFlyLic] == 1) { PlayerInfo[playerid][pFlyLic] = 0; PlayerInfo[playerid][pFlyLicT] = 0; new str[128]; format(str,128,"UPDATE users SET `FlyLic`='0',`FlyLicT`='0' WHERE `name`='%s'",PlayerInfo[playerid][pNames]); mysql_query(SQL,str); SCM(playerid,COLOR_GRAD1,"Ti-a expirat licenta de pilotaj!"); } if(PlayerInfo[playerid][pBoatLicT] == 0 && PlayerInfo[playerid][pBoatLic] == 1) { PlayerInfo[playerid][pBoatLic] = 0; PlayerInfo[playerid][pBoatLic] = 0; new str[128]; format(str,128,"UPDATE users SET `BoatLic`='0',`BoatLicT`='0' WHERE `name`='%s'",PlayerInfo[playerid][pNames]); mysql_query(SQL,str); SCM(playerid,COLOR_GRAD1,"Ti-a expirat licenta de navigat!"); } if(PlayerInfo[playerid][pFishLicT] == 0 && PlayerInfo[playerid][pFishLic] == 1) { PlayerInfo[playerid][pFishLic] = 0; PlayerInfo[playerid][pFishLicT] = 0; new str[128]; format(str,128,"UPDATE users SET `FishLic`='0',`FishLicT`='0' WHERE `name`='%s'",PlayerInfo[playerid][pNames]); mysql_query(SQL,str); SCM(playerid,COLOR_GRAD1,"Ti-a expirat licenta de pescuit!"); } if(PlayerInfo[playerid][pGunLicT] == 0 && PlayerInfo[playerid][pGunLic] == 1) { PlayerInfo[playerid][pGunLic] = 0; PlayerInfo[playerid][pGunLicT] = 0; new str[128]; format(str,128,"UPDATE users SET `GunLic`='0',`GunLicT`='0' WHERE `name`='%s'",PlayerInfo[playerid][pNames]); mysql_query(SQL,str); SCM(playerid,COLOR_GRAD1,"Ti-a expirat licenta de port-arma!"); } new fpm,fkm; fpm = PlayerInfo[playerid][pMember]; fkm = PlayerInfo[killerid][pMember]; for(new turf = 1; turf < sizeof(TurfInfo); turf++) { if(IsPlayerInTurf(playerid, turf) && IsPlayerInTurf(killerid, turf)) { if(IsAMember(playerid) && IsAMember(killerid)) { if(WarInfo[turf][wFaction] == fpm && WarInfo[turf][wAttacker] == fkm || WarInfo[turf][wFaction] == fkm && WarInfo[turf][wAttacker] == fpm) { if(fkm == WarInfo[turf][wAttacker] || fkm == WarInfo[turf][wFaction]) { WarScoreF[fkm][turf] += 1.0; } ucideri[killerid][turf] ++; decese[playerid][turf] ++; if(PlayerInfo[killerid][pMember] == WarInfo[turf][wAttacker]) { if(ucideri[killerid][turf] > bestscoreat[turf]) { bestscoreat[turf] = ucideri[killerid][turf]; bestmemberat[turf] = killerid; } } if(PlayerInfo[killerid][pMember] == WarInfo[turf][wFaction]) { if(ucideri[killerid][turf] > bestscoredf[turf]) { bestscoredf[turf] = ucideri[killerid][turf]; bestmemberdf[turf] = killerid; } } if(PlayerInfo[playerid][pMember] == WarInfo[turf][wAttacker]) { if(decese[playerid][turf] > worstscoreat[turf]) { worstscoreat[turf] = decese[playerid][turf]; worstmemberat[turf] = playerid; } } if(PlayerInfo[playerid][pMember] == WarInfo[turf][wFaction]) { if(decese[playerid][turf] > worstscoredf[turf]) { worstscoredf[turf] = decese[playerid][turf]; worstmemberdf[turf] = playerid; } } foreach(Player, x) { if(PlayerInfo[x][pMember] == WarInfo[turf][wAttacker] || PlayerInfo[x][pMember] == WarInfo[turf][wFaction]) { SendDeathMessageToPlayer(x, killerid, playerid, reason); } } format(string, sizeof(string), "War: {FFFFFF}L-ai omorat pe %s si ai primit 1.000$! (Turf ID: %d)",GetName(playerid),turf); SCM(killerid, 0x0080FFFF, string); GivePlayerCash(killerid,1000); Update(killerid,pCashx); format(string, sizeof(string), "War: {FFFFFF}Ai fost omorat de %s! (Turf ID: %d)",GetName(killerid),turf); SCM(playerid, 0x0080FFFF, string); return 1; } } } } if(IsACop(killerid) && OnDuty[killerid] == 1) { if(PlayerInfo[playerid][pWantedLevel] >= 1) { new price = PlayerInfo[playerid][pWantedLevel] * 2000; new count; new wantedlost2 = PlayerInfo[playerid][pWantedLevel]; foreach(Player,i) { if(IsACop(i) && CrimInRange(30.0, playerid,i) && OnDuty[i] == 1) { count = 1; format(string, sizeof(string), "~w~Running Suspect ~r~Killed~n~~r~Bonus ~g~$%d", price); GameTextForPlayer(i, string, 5000, 1); ConsumingMoney[i] = 1; GivePlayerCash(i, price/2); Update(i, pCashx); } } if(count == 1) { GivePlayerCash(playerid, - price); PlayerInfo[playerid][pWantedDeaths] += 1; PlayerInfo[playerid][pJailed] = 1; PlayerInfo[playerid][pJailTime] = (PlayerInfo[playerid][pWantedLevel])*(150); new sendername[30]; GetPlayerName(killerid,sendername,sizeof(sendername)); format(string, sizeof(string), "* Ai fost arestat pentru %d secunde si ai pierdut %d$ pentru ca ai incercat sa fugi si ai fost omorat de agentul %s!", PlayerInfo[playerid][pJailTime], price,sendername); SendClientMessage(playerid, COLOR_YELLOW, string); TogglePlayerControllable(playerid, 0); SetTimerEx("UnFreezeStation", 1000, false, "i", playerid); WantedPoints[playerid] = 0; PlayerInfo[playerid][pWantedLevel] = 0; SetPlayerWantedLevel(playerid, 0); Update(playerid,pWantedLevelx); Update(playerid,pJailedx); Update(playerid,pJailTimex); ClearCrime(playerid); new deathname[25]; GetPlayerName(playerid,deathname,sizeof(deathname)); if(PlayerInfo[killerid][pMember] == 1 || PlayerInfo[killerid][pLeader] == 1) { format(string, sizeof(string), "HQ: All Units. Officer %s has completed assignment",sendername); SendTeamMessage(1, COLOR_DBLUE, string); SendTeamMessage(2, COLOR_DBLUE, string); SendTeamMessage(3, COLOR_DBLUE, string); format(string, sizeof(string), "HQ: %s has been processed, got killed having wanted %d",deathname,wantedlost2); SendTeamMessage(1, COLOR_DBLUE, string); SendTeamMessage(2, COLOR_DBLUE, string); SendTeamMessage(3, COLOR_DBLUE, string); } else if(PlayerInfo[killerid][pMember] == 2 || PlayerInfo[killerid][pLeader] == 2) { format(string, sizeof(string), "HQ: All Units. Agent %s has completed assignment",sendername); SendTeamMessage(1, COLOR_DBLUE, string); SendTeamMessage(2, COLOR_DBLUE, string); SendTeamMessage(3, COLOR_DBLUE, string); format(string, sizeof(string), "HQ: %s has been processed, got killed having wanted %d",deathname,wantedlost2); SendTeamMessage(1, COLOR_DBLUE, string); SendTeamMessage(2, COLOR_DBLUE, string); SendTeamMessage(3, COLOR_DBLUE, string); } else if(PlayerInfo[killerid][pMember] == 3 || PlayerInfo[killerid][pLeader] == 3) { format(string, sizeof(string), "HQ: All Units. Soldier %s has completed assignment",sendername); SendTeamMessage(1, COLOR_DBLUE, string); SendTeamMessage(2, COLOR_DBLUE, string); SendTeamMessage(3, COLOR_DBLUE, string); format(string, sizeof(string), "HQ: %s has been processed, got killed having wanted %d",deathname,wantedlost2); SendTeamMessage(1, COLOR_DBLUE, string); SendTeamMessage(2, COLOR_DBLUE, string); SendTeamMessage(3, COLOR_DBLUE, string); } } } } 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, "The line just went dead...."); CellTime[caller] = 0; CellTime[playerid] = 0; Mobile[caller] = 255; } Mobile[playerid] = 255; CellTime[playerid] = 0; } if(PlayerPaintballing[playerid] != 0) { format(string, sizeof(string), "{0080FF}Paintball:{FFFFFF} L-ai omorat pe %s!",GetName(playerid)); SendClientMessage(killerid, 0x0080FFFF, string); format(string, sizeof(string), "{0080FF}Paintball:{FFFFFF} Ai fost omorat de %s!",GetName(killerid)); SendClientMessage(playerid, 0x0080FFFF, string); new pinfo[128]; KillP[killerid]++; format(pinfo,sizeof(pinfo),"Ai acumulat %d crime, %d decese.", KillP[killerid],DeathP[killerid]); PlayerTextDrawSetString(killerid, Paintball[2][killerid], pinfo); PlayerTextDrawShow(killerid, Paintball[2][killerid]); DeathP[playerid]++; format(pinfo,sizeof(pinfo),"Ai acumulat %d crime, %d decese.", KillP[playerid],DeathP[playerid]); PlayerTextDrawSetString(playerid, Paintball[2][playerid], pinfo); PlayerTextDrawShow(playerid, Paintball[2][playerid]); PlayerPaintballScore[killerid] = KillP[killerid]-DeathP[killerid]; if(PlayerPaintballScore[killerid] > PaintballWinnerScore) { PaintballWinner = killerid; PaintballWinnerScore = PlayerPaintballScore[killerid]; foreach(Player,i) { if(IsPlayerConnected(i)) { if(PlayerPaintballing[i] != 0) { format(pinfo,sizeof(pinfo),"%s este in frunte cu %d ucideri!",GetName(PaintballWinner),PaintballWinnerScore); PlayerTextDrawSetString(i, Paintball[1][i], pinfo); PlayerTextDrawShow(i, Paintball[1][i]); } } } } return 1; } if (InCloth[playerid] != 0) { InCloth[playerid] = 0; ChosenSkin[playerid] = 0; TogglePlayerControllable(playerid, 1); SetCameraBehindPlayer(playerid); ShowShopTextdraw(playerid, false); } if(PlayerInfo[playerid][pHeadValue] > 0) { if(IsPlayerConnected(killerid)) { if(PlayerInfo[killerid][pMember] == 11) { if(GoChase[killerid] == playerid) { new killer[MAX_PLAYER_NAME]; GetPlayerName(killerid, killer, sizeof(killer)); GivePlayerCash(killerid, PlayerInfo[playerid][pHeadValue]); format(string,128,"Asasinul %s a finalizat contractul pe capul lui %s si a primit $%s!",killer,name,FormatNumber(PlayerInfo[playerid][pHeadValue])); SendFamilyMessage(11, COLOR_YELLOW, string); PlayerInfo[playerid][pHeadValue] = 0; GotHit[playerid] = 0; GetChased[playerid] = 999; GoChase[killerid] = 999; new str[256]; format(str,sizeof(str),"UPDATE users SET `HeadValue`='0' WHERE `name`='%s'",PlayerInfo[killerid][pNames]); mysql_query(SQL,str); Update(killerid, pCashx); foreach(Player,i) { ShowPlayerNameTagForPlayer(i, killerid, 1); } togfind[killerid] = 0; PlayerInfo[killerid][pHitT] = 0; format(string, sizeof(string), "UPDATE users SET `HitT`='%d' WHERE `name`='%s'", PlayerInfo[killerid][pHitT], PlayerInfo[killerid][pNames]); mysql_query(SQL,string); if(WantedPoints[killerid] > 6) { WantedPoints[killerid] = 6; } if(reason != 49) { SetPlayerCriminal(killerid,255, "Omor calificat"); } else if(reason == 49) { SetPlayerCriminal(killerid,255, "Hit And Run"); } } } } return 1; } if(gTeam[playerid] == 3) // Civil { if(IsPlayerConnected(killerid)) { if(gTeam[killerid] == 3 || gTeam[killerid] == 4 || gTeam[killerid] == 5 || (gTeam[killerid] == 11 && GoChase[killerid] == 999)) { new namekill[25]; GetPlayerName(killerid,namekill,sizeof(namekill)); format(string,sizeof(string),"Ai fost omorat de %s! Utilizeaza [/call 112] daca doresti sa fie sanctionat!",GetName(killerid)); SCM(playerid,COLOR_LIGHTRED,string); } } return 1; } if(gTeam[playerid] == 2) // PD { if(IsPlayerConnected(killerid)) { if(gTeam[killerid] == 3 || gTeam[killerid] == 4 || gTeam[killerid] == 5 || (gTeam[killerid] == 11 && GoChase[killerid] == 999)) { PlayerInfo[killerid][pWantedLevel] += 1; SetPlayerWantedLevel(killerid, pWantedLevel); SetPlayerCriminal(killerid,255, "Omor calificat"); Update(killerid, pWantedLevelx); } } return 1; } if(gTeam[playerid] == 4) // factiuni pasnice { if(IsPlayerConnected(killerid)) { if(gTeam[killerid] == 3 || gTeam[killerid] == 4 || gTeam[killerid] == 5 || (gTeam[killerid] == 11 && GoChase[killerid] == 999)) { new namekill[25]; GetPlayerName(killerid,namekill,sizeof(namekill)); format(string,sizeof(string),"Ai fost omorat de %s! Utilizeaza [/call 112] daca doresti sa fie sanctionat!",GetName(killerid)); SCM(playerid,COLOR_LIGHTRED,string); } } return 1; } if(gTeam[playerid] == 5) // Gangs { if(IsPlayerConnected(killerid)) { if(gTeam[killerid] == 3 || gTeam[killerid] == 4 || (gTeam[killerid] == 11 && GoChase[killerid] == 999)) { new namekill[25]; GetPlayerName(killerid,namekill,sizeof(namekill)); format(string,sizeof(string),"Ai fost omorat de %s! Utilizeaza [/call 112] daca doresti sa fie sanctionat!",GetName(killerid)); SCM(playerid,COLOR_LIGHTRED,string); } } return 1; } if(gTeam[playerid] == 11) // Hitman { if(IsPlayerConnected(killerid)) { if(gTeam[killerid] == 3 || gTeam[killerid] == 4 || gTeam[killerid] == 5) { new namekill[25]; GetPlayerName(killerid,namekill,sizeof(namekill)); format(string,sizeof(string),"Ai fost omorat de %s! Utilizeaza [/call 112] daca doresti sa fie sanctionat!",GetName(killerid)); SCM(playerid,COLOR_LIGHTRED,string); } } return 1; } killerid = INVALID_PLAYER_ID; } return 1; }