Download:
http://solidfiles.com/d/ed99/Hiba javítva.
Letöltés v1.1
http://solidfiles.com/d/4a198/Nincs for ciklus.
Igazán talán roleplay módokban használják ezt a funkciót többet, egyszerre egy jármû azonosító szám megadásával ellenõrizhetõ van-e játékos jármûvezetõként a jármûben.
Test script:
[pawn]
#include <a_samp>
#define FILTERSCRIPT
#include <zcmd>
#include <getvehicledriver>
#if defined FILTERSCRIPT
public
OnFilterScriptInit()
{
#else
public
OnGameModeInit()
{
#endif
return 1;
}
// test command
COMMAND:getvehicledriver(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, \"Usage: /getvehicledriver [vehicleid 1 - 2000]\");
new
str[128],
player1 = GetVehicleDriver(strval(params));
if(player1 != INVALID_PLAYER_ID)
{
new
PlayerN[MAX_PLAYER_NAME];
GetPlayerName(player1, PlayerN, 24);
format(str, sizeof str, \"VehicleDriver vehicleid: %d | playerid: %d | PlayerName: %s\", GetPlayerVehicleID(player1), player1, PlayerN);
SendClientMessage(playerid, -1, str);
} else {
SendClientMessage(playerid, -1, \"No player is the driver as\"); // Sorry google translate
}
return 1;
}
/*
//old code:
stock
GetVehicleDriver(vehicleid) by.: forum.sa-mp.com user
{
for(new i; i < 500; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPlayerState(i) != PLAYER_STATE_DRIVER) continue;
if(GetPlayerVehicleID(i) == vehicleid)
{
return i;
}
}
return -1;
}
*/
[/pawn]
És azoknak akik nem akarnak még egy plussz .inc fájlt de használni szeretnék ezt a funkciót itt a kód amit csak be kell ágyazni a gamemod-ba vagy filterscript-be:
[pawn]
#include <a_samp>
/*
GetVehicleDriver function by Zsolesszka aka Phento v1.1
Date 2011.07.23
Example put In OnGameModeInit Or OnFilterScriptInit
*/
static
VehicleDriverPlayerid[MAX_VEHICLES] = { INVALID_PLAYER_ID, ... };
//------------------------------------------------------------------------------
stock
GetVehicleDriver(vehicleid)
{
if(vehicleid < 1 || vehicleid > sizeof(VehicleDriverPlayerid)) return INVALID_PLAYER_ID; // invalid array
if(VehicleDriverPlayerid[vehicleid - 1] != INVALID_PLAYER_ID && IsPlayerInVehicle(VehicleDriverPlayerid[vehicleid - 1], vehicleid) && GetPlayerVehicleSeat(VehicleDriverPlayerid[vehicleid - 1]) == 0)
return VehicleDriverPlayerid[vehicleid - 1]; // return playerid vehicledriver
return VehicleDriverPlayerid[vehicleid - 1] = INVALID_PLAYER_ID;
}
//------------------------------------------------------------------------------
public
OnPlayerStateChange(playerid, newstate, oldstate)
{
// ->
if(newstate == PLAYER_STATE_DRIVER)
{
new
vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid)
{
VehicleDriverPlayerid[vehicleid - 1] = playerid;
}
}
//-<
return 1;
}
//------------------------------------------------------------------------------
[/pawn]
Hiba javítva, a hiba abból állt ha egy jármû vezetõje voltam és utána egy másiké is akkor hibás adat maradt vissza hogy én még mindig az elõzõ jármû vezetõje is vagyok. Ezt sikerült kiküszöbölni az IsPlayerInVehicle függvénnyel ami ellenõrzi hogy az adott jármûben is van-e a játékos.