[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Ich denke nicht alle (sowie ich) wissen wie MrMonat das macht. Ich persönlich würde einfach durch alle Spieler durchgehen, und dort abfragen ob der Spieler in der Fraktion ist.
Wenn ja, den Spieler und ggf. den Rank oder ähnliches in den String schreiben lassen.
Wenn du aber alle Spieler in eine extra Tabelle schreiben möchtest, dann musst du drauf achten, das du entweder genug Spalten hast, oder die Spieler richtig splittest.
Das ganze kann man ja durch die Split-Funktion machen. -
@xCurry:
Du legst in der Spieler-Tabelle eine Spalte "fraktion" an, als INT. Darin speicherst du die Fraktions-ID in der der Spieler ist.
Dann kannst du bei deinem /members Befehl einfach einen SELECT wie folgt machen:
%d wird in dem Fall mit der Fraktions-ID die eingegeben wurde ersetzt, sollte klar sein. -
Moin Leute,
ich bin grad dabei mein Eroberungsystem fertig zu machen, und es klappt alles für einen Spieler, aber wenn ich es mit meinem Spieler teste geht es nur für ID 0... warum? Ich hab bei mir eine Globae Variable die mit [MAX_PLAYERS] ist, und da sollen halt nur Zahlen eingetragen ,aber wenn er z.b. beim Spawnen abgefragt wird passiert nichts? Nur für ID 0 , ich möchte jetzt keinen Code einfügen weil der EWIG LANGE ist...
Wäre sehr korrekt von euch wenn ihr mir evlt. "Tipps" gibt woran es liegen könnte?
-
Hallo, ich hab da ein Problem undzwar, wenn ich /frc eingebe werden keine Autos zurück gespawnt wenn ich in einem Car bin.
if(PlayerInfo[playerid][pLeader] == 1)
{
for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
{
if(!IsPlayerInAnyVehicle(PolizeiVehs[pv]))
{
SetVehicleToRespawn(PolizeiVehs[pv]);
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
{
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
{
if(!IsPlayerInAnyVehicle(PolizeiVehs[fc]))
{
DestroyAndCreateFactionCar(fc);
}
}
}
}
SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast deine Fraktionsfahrzeuge erfolgreich respawnt.");
return 1;
} -
So:
if(PlayerInfo[playerid][pLeader] == 1)
{
for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
{
if(!IsAnyPlayerInVehicle(PolizeiVehs[pv]))
{
SetVehicleToRespawn(PolizeiVehs[pv]);
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
{
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
{
if(!IsAnyPlayerInVehicle(FactionCars[fc][fCarid])) //fCarid eventuell anpassen
{
DestroyAndCreateFactionCar(fc);
}
}
}
}
SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast deine Fraktionsfahrzeuge erfolgreich respawnt.");
return 1;
}Mit:
stock IsAnyPlayerInVehicle(vehicleid)
{
for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vehicleid) return 1;
return 0;
} -
-
Der Parameter "playerid" fehlt
-
Und wo genau soll ich jetzt "playerid" setzen?
-
if(!IsAnyPlayerInVehicle(playerid,FactionCars[fc][PolizeiVehs[fc]]))
So -
Nun bekomme ich 2 Warning's
warning 213: tag mismatch
warning 202: number of arguments does not match definition -
if(!IsPlayerInVehicle(playerid,FactionCars[fc][PolizeiVehs[fc]]))
Die Funktion heißt IsPlayerInVehicle. Klappt das so?
#edit: Sorry, ich hatte auch gerade hier den Parameter "playerid" vergessen, habe das hinzugefügt. -
Bekomme dann ein Warning
warning 213: tag mismatch
-
Wie hast du PolizeiVehs deklariert? Zeig das mal her
-
new PolizeiVehs[50];
Sorry das ich spät antworte
-
if(!IsPlayerInVehicle(playerid,PolizeiVehs[fc]))
-
Nein Nein Nein Nein ...
Lest doch mal, die Funktion ist diese:
stock IsAnyPlayerInVehicle(vehicleid)
{
for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vehicleid) return 1;
return 0;
}Also muss es so sein:
if(!IsAnyPlayerInVehicle(FactionCars[fc][CarID]))
Das "CarID" musst du mit dem ersetzen, das vor CreateVehicle beim Fraktionscar-erstellen steht. Wenn du nicht weißt was, poste dein enum das zu FactionCars gehört, bzw. poste wie du die Fahrzeuge erstellst.EDIT:
Saphire: Zitat, im Falle du es nicht siehst, da der Post nicht mehr auf der neusten Seite ist. -
Ups, die Funktion habe ich mir oben gar nicht angeschaut..
Sorry! -
if(strcmp(cmd, "/frakrc", true) == 0 || strcmp(cmd, "/frc", true) == 0)
{
if(PlayerInfo[playerid][pLeader] == 1)
{
for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
{
if(!IsAnyPlayerInVehicle(PolizeiVehs[pv]))
{
SetVehicleToRespawn(PolizeiVehs[pv]);
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
{
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
{
if(!IsAnyPlayerInVehicle(FactionCars[fc][PolizeiVehs]))
{
DestroyAndCreateFactionCar(fc);
}
}
}
}
SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast deine Fraktionsfahrzeuge erfolgreich respawnt.");
return 1;
}Polizeivehs werden so erstellt
new PolizeiVehs[50];
PolizeiVehs[0] = AddStaticVehicleEx(...) -
Nicht die Polizei Fahrzeuge, sondern die FactionCars.
Poste den Code wie du die erstellst.