OnPlayerDeath And OnPlayerDisconnect [+REP]
#1

Hello im trying to destroy player car when he/she dead and when he/she disconnect from server iv this terms

SetVehicleToRespawn(vehid);
DestroyVehicle(vehid);


But strange that its working even when you be passenger , so if im passenger and dead my car destroy , and its should not , its should only destroy if you was driver lead isnt true? , iv tried like make
if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
But nothing worked please give me an ideas!

NOTE: when i type /kill or dead , its take 2 seconds to do the anim and die like just report that iv dead :S !
Reply
#2

show us codes.
Reply
#3

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
      if( IsPlayerInAnyVehicle( playerid ))
      {
            if( ! GetPlayerVehicleSeat( playerid ))
            {
                    DestroyVehicle( GetPlayerVehicleID( playerid ));
 .....
Make sure you read this, too ! (it CAN return 128 for some weird reason)

The same code goes for both the callbacks..
Reply
#4

Quote:
Originally Posted by Rajat_Pawar
Посмотреть сообщение
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
      if( IsPlayerInAnyVehicle( playerid ))
      {
            if( ! GetPlayerVehicleSeat( playerid ))
            {
                    DestroyVehicle( GetPlayerVehicleID( playerid ));
 .....
Make sure you read this, too ! (it CAN return 128 for some weird reason)
Thanks what about OnPlayerDeath it is hard :S
Reply
#5

post same codes. but under OnPlayerDeath.
Reply
#6

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
	//Killingspree
    new str[ 256 ], KillerName[MAX_PLAYER_NAME];
    GetPlayerName(killerid, KillerName, sizeof(KillerName));
    //End KS
    GodMode[playerid] = 0;
    SendDeathMessage(killerid, playerid, reason);
    if(killerid != INVALID_PLAYER_ID)
    {
   	    TotalKills[killerid]++;
        SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
        SetPlayerWantedLevel(killerid, (GetPlayerWantedLevel(killerid) + 1));
        GameTextForPlayer(killerid,"~w~+1 Score~R~~N~+1 kill~N~ ~g~+1000$", 5000, 1);
        GivePlayerMoney(killerid, 1000);
        Streaks[killerid]++;
    if(Streaks[killerid] == 3) {
            format(str, sizeof(str), "%s {00FFEE}is on Triple Kill  {FFAF00}(3 kills +3 Score!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);
            SetPlayerScore(killerid, GetPlayerScore(killerid) + 2);
    }
    if(Streaks[killerid] == 5) {
            format(str, sizeof(str), "%s {F81414}is on Killing Spree {FFAF00}(5 Kills +5 Score!!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);
            SetPlayerScore(killerid, GetPlayerScore(killerid) + 4);
    }
    if(Streaks[killerid] == 10) {
            format(str, sizeof(str), "%s {B8FF02}is on UNSTOPPABLE {FFAF00}(10 Kills +10 Score!!!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);

    }
    }
    TotalDeaths[playerid]++;
    SetPlayerScore(playerid, GetPlayerScore(playerid) - 1);
    SetPlayerWantedLevel(playerid, 0);
    GivePlayerMoney(playerid, -1000);
    GameTextForPlayer(playerid,"~R~W~B~A~G~S~W~T~P~E~G~D~N~~N~~N~~N~~N~~R~Rest ~W~In ~g~PEACE", 3000, 5);
    return 1;
}
??
Reply
#7

Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassenger(playerid)) return SetPVarInt(playerid, "LastCar", vehicleid);
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
SetPVarInt(playerid, "LastCar", vehicleid);
}

public OnPlayerDeath(playerid, killerid, reason)
{
	//Killingspree
    new str[ 256 ], KillerName[MAX_PLAYER_NAME];
    GetPlayerName(killerid, KillerName, sizeof(KillerName));
    //End KS
    GodMode[playerid] = 0;
    SendDeathMessage(killerid, playerid, reason);
    new vehicleid = GetPVarInt(playerid, "LastCar");
    if(vehicleid != INVALID_VEHICLE_ID) DestroyVehicle(vehicleid);
    DeletePVarInt(playerid, "LastCar");
    if(killerid != INVALID_PLAYER_ID)
    {
   	    TotalKills[killerid]++;
        SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
        SetPlayerWantedLevel(killerid, (GetPlayerWantedLevel(killerid) + 1));
        GameTextForPlayer(killerid,"~w~+1 Score~R~~N~+1 kill~N~ ~g~+1000$", 5000, 1);
        GivePlayerMoney(killerid, 1000);
        Streaks[killerid]++;
    if(Streaks[killerid] == 3) {
            format(str, sizeof(str), "%s {00FFEE}is on Triple Kill  {FFAF00}(3 kills +3 Score!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);
            SetPlayerScore(killerid, GetPlayerScore(killerid) + 2);
    }
    if(Streaks[killerid] == 5) {
            format(str, sizeof(str), "%s {F81414}is on Killing Spree {FFAF00}(5 Kills +5 Score!!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);
            SetPlayerScore(killerid, GetPlayerScore(killerid) + 4);
    }
    if(Streaks[killerid] == 10) {
            format(str, sizeof(str), "%s {B8FF02}is on UNSTOPPABLE {FFAF00}(10 Kills +10 Score!!!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);

    }
Okay, so basically this method uses pVar's to store the last vehicle ID the player has entered. Then when the player dies the vehicle will be destroyed.
Reply
#8

Quote:
Originally Posted by Abagail
Посмотреть сообщение
Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
SetPVarInt(playerid, "LastCar", vehicleid);
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
SetPVarInt(playerid, "LastCar", vehicleid);
}

public OnPlayerDeath(playerid, killerid, reason)
{
	//Killingspree
    new str[ 256 ], KillerName[MAX_PLAYER_NAME];
    GetPlayerName(killerid, KillerName, sizeof(KillerName));
    //End KS
    GodMode[playerid] = 0;
    SendDeathMessage(killerid, playerid, reason);
    if(killerid != INVALID_PLAYER_ID)
    {
   	    TotalKills[killerid]++;
        SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
        SetPlayerWantedLevel(killerid, (GetPlayerWantedLevel(killerid) + 1));
        GameTextForPlayer(killerid,"~w~+1 Score~R~~N~+1 kill~N~ ~g~+1000$", 5000, 1);
        GivePlayerMoney(killerid, 1000);
        Streaks[killerid]++;
    if(Streaks[killerid] == 3) {
            format(str, sizeof(str), "%s {00FFEE}is on Triple Kill  {FFAF00}(3 kills +3 Score!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);
            SetPlayerScore(killerid, GetPlayerScore(killerid) + 2);
            new vehicleid = GetPVarInt(playerid, "LastCar");
            DestroyVehicle(vehicleid);
    }
    if(Streaks[killerid] == 5) {
            format(str, sizeof(str), "%s {F81414}is on Killing Spree {FFAF00}(5 Kills +5 Score!!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);
            SetPlayerScore(killerid, GetPlayerScore(killerid) + 4);
    }
    if(Streaks[killerid] == 10) {
            format(str, sizeof(str), "%s {B8FF02}is on UNSTOPPABLE {FFAF00}(10 Kills +10 Score!!!)", KillerName); 
            SendClientMessageToAll(0xADFF2FAA, str);

    }
Thanks for trying to help me ,but its not worked cuz if i was passenger also vehicle destroy
Reply
#9

It should work now.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)