hallo, da es in diesem forum zwar schon tutorials über die id verschiebung bei fraktionen gibt, diese mich aber nicht überzeugt haben, hab ich ein eigenes geschrieben.
declaration der variable in der die fraktionsids gespeichert werden:
new VehicleOwner[MAXNUMVEHICLE];
MAXNUMVEHICLE steht für die maximale anzahl der fahrzeuge auf dem server.
das spawnen der fahrzeuge funktioniert so:
new tmp;
// FBI-Base
tmp = AddStaticVehicle(490,984.9623,1070.4612,10.9476,1.1011,0,0); VehicleOwner[tmp] = FBI; // Ranger
tmp = AddStaticVehicle(490,988.3912,1070.5381,10.9483,0.7716,0,0); VehicleOwner[tmp] = FBI; // Ranger
ihr habt bestimmt ne lange liste an fahrzeugen also nutzt die replace funktion(strg+h)
FBI ist nen makro für die fraktionsid steht. wie jetzt??
und darf der spieler einsteigen?
public isPlayerFraction(playerid, vehicleid)
{
if(PlayerInfo[playerid][pMember] == VehicleOwner[vehicleid] || PlayerInfo[playerid][pLeader] == VehicleOwner[vehicleid]) // ist die id des spielers gleich der id des fahrzeugs? wenn ja, dann einsteigen. wenn das fahrzeug die ownerid 0 hat kann man imm einsteigen wegem dem oder ( das: "||" ).
{
return 1;
}
if(PlayerInfo[playerid][pMember] == SFPD || PlayerInfo[playerid][pLeader] == SFPD ||
PlayerInfo[playerid][pMember] == LSPD || PlayerInfo[playerid][pLeader] == LSPD ||
PlayerInfo[playerid][pMember] == FBI || PlayerInfo[playerid][pLeader] == FBI ||
PlayerInfo[playerid][pMember] == ARMY || PlayerInfo[playerid][pLeader] == ARMY) // FBI/Army/Polizei Mitglied
{
if(VehicleOwner[vehicleid] == SFPD || VehicleOwner[vehicleid] == LSPD ||
VehicleOwner[vehicleid] == MEDIC || VehicleOwner[vehicleid] == NEWS ||
VehicleOwner[vehicleid] == TAXI || VehicleOwner[vehicleid] == PRESIDENT ||
VehicleOwner[vehicleid] == ORDNUNGSAMT || VehicleOwner[vehicleid] == FAHRLEHRER) //darf hier auch einsteigen
{
return 1;
}
}
if(VehicleOwner[vehicleid] == FBI || VehicleOwner[vehicleid] == ARMY) // in FBI und ARMY fahrzeuge darf jeweils die andere fraktion auch einsteigen.
{
if( PlayerInfo[playerid][pMember] == FBI || PlayerInfo[playerid][pLeader] == FBI ||
PlayerInfo[playerid][pMember] == ARMY || PlayerInfo[playerid][pLeader] == ARMY)//FBI/Army Mitglied
{
return 1;
}
}
SendClientMessage(playerid,COLOR_GREY," Du gehörst dieser Fraktion nicht an!");
return 0;
}
die abfrage wird z.b. so benutzt:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(ispassenger == 0){
if(isPlayerFraction(playerid, vehicleid) == 0){ // wenn er nicht zur fraktion gehört, dann rauswerfen/slapen
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid, pX, pY, pZ);
SetPlayerPos(playerid, pX, pY, pZ+3);
}
}
return 1;
}
ich hoffe ihr habt alles verstanden.
ich freue mich über kritik und verbesserungsvorschläge