Beitrag von reaL. ()
Dieser Beitrag wurde vom Autor gelöscht ().
Mach einfach im Fahrzeugenum einen neuen Eintrag, den du z.B. carSID = carserverid nennst.
Den verwendest du dann so:
Vehicle[i][carSID] = CreateVehicle(Vehicle[i][fModel],Vehicle[i][fSposX],Vehicle[i][fSposY],Vehicle[i][fSposZ],Vehicle[i][fSposO],Vehicle[i][fColor1],Vehicle[i][fColor2], CAR_RESPAWN_TIME,Vehicle[i][fSirene]);
//Da CreateVehicle die Server Auto ID wiedergibt, kannst du sie so einfach verwenden, da sie in Vehicle[i][carSID] nun gespeichert ist.
//Mit Vehicle[xy[carSID] kannst du es dann überall benutzen.
Oder reden wir immer noch aneinander vorbei?
Falls du mir schon vorher geantwortet hast, tut mir leid, muss ich wohl übersehen haben. Bins eigentlicht gewohnt eine Nachricht wegen "Zitat" oder Markierung zu kriegen.. ![]()
Ich verstehe aber nicht ganz wie ich das später anwenden soll, ich habe ja verstanden wie du es meinst, aber um an Ende dann mit dem Array [î] auch einstimmig zu sein, muss ich ja jedes mal eine Schleife machen die die rows aufzählt und dann von jeder Car ID die carSID überprüft, dies habe ich versucht aber es kamen mehrere Errors, könntest du mir ein Beispiel zeigen wie ich das anwende?
Was möchtest du denn dann mit der ID des Autos machen? Frage ich mal so, kann ich vielleicht ein besseres Beispiel zeigen.
Beispiel:
befehl: /motor (bla bla unwichtig)
if(HasKeys)
SetEngineState(true) oder was auch immer ^^.
Problem ist, durch den Array [î] was eigentlich die Row nummer ist bei dem LoadVehs, funktioniert das natürlich so nicht.
forward HasKeys(playerid, vehicleid);
public HasKeys(playerid, vehicleid)
{
if(Vehicle[î][fFrak] == PlayerInfo[playerid][pFrak])
{
return 1;
}
else if(Vehicle[î][fOwner] == PlayerInfo[playerid][pName])
{
return 1;
}
else if(Vehicle[î][fSecond_Owner] == PlayerInfo[playerid][pName])
{
return 1;
}
return 0;
}
Alles anzeigen
Probiere es mal so:
if(strcmp(cmd, "/motor", true) == 0)
{
new carID = GetPlayerVehicleID(playerid);
for(new i = 0; i < sizeof(Vehicle); i++)
{
if(!Vehicle[i][carSID])continue; // Oder wie auch immer du es nun genannt hast.
if(!Vehicle[i][carSID] != carID)continue;
if(Vehicle[i][fFrak] == PlayerInfo[playerid][frak]) //Die ID der Fraktion eintragen.
{
if(PlayerInfo[playerid][frak] != FRAKID)) //Die ID der Fraktion eintragen, die das Fahrzeug benutzen darf.
{
SendClientMessage(playerid, ROT, "Du hast keine Schlüssel.");
break;
}
else
{
/* Hier jetzt Motor anschalten (Get- & SetVehicleParamsEx) */
}
}
}
return 1;
}
sieht gut aus, hab da noch ne frage zu SEtVehicleParams,
Wenn ich jetzt den motor an mache, muss ich dann jedes mal fragen, damit ich beim /motor den Lichstatus nicht beeinflusse:
if(GetVehicleParamsEx(vehicleid, false, true, false, false, false, false, false))
{ SetVehicleParamsEx(vehicleid, true, true, false, false, false, false, false)) }
if(GetVehicleParamsEx(vehicleid, false, false, false, false, false, false, false))
{ SetVehicleParamsEx(vehicleid, true, false, false, false, false, false, false)) }
"Parameters:
(vehicleid, &engine, &lights, &alarm, &doors, &bonnet, &boot, &objective)"
Du musst als erstes mal die Variablen erstellen dafür:
new tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective;
//Können beliebig geändert werden (Namen)
//So benutzt du es dann:
GetVehicleParamsEx(carid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
//So werden die Variablen damit befüllt und du kannst sie beliebig ändern. So benutzt du es:
if(tmp_engine==1)
{
tmp_engine=0;
}
else
{
tmp_engine=1;
}
SetVehicleParamsEx(carid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
Was passiert wenn du die y_globaltags.inc Datei in den selben Ordner wie die y_natives.inc Datei zu verschieben.
Das ist ja bereits der Fall..
Hey ich habe 2 kleine Anliegen
1 warum sieht man mein Namen immernoch ?
ocmd:maske(playerid)
{
if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist Kein SEK Mitglied.");
if(Einsatz != 1) return SendClientMessage(playerid,BLAU,"Es wurde kein Einsatz autorisiert!");
if(pInfo[playerid][pSekduty] != 1) return SendClientMessage(playerid,BLAU,"Du bist nicht im Dienst!");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(Masked[playerid] == true)
{
ShowPlayerNameTagForPlayer(i, playerid, 1);
SendClientMessage(playerid,BLAU,"Du hast deine Maske abgesetzt.");
Masked[playerid] = false;
return 1;
}
else
{
ShowPlayerNameTagForPlayer(playerid, i, 0);
SendClientMessage(playerid,BLAU,"Du hast deine Maske aufgesetzt.");
Masked[playerid] = true;
return 1;
}
}
return 1;
}
Alles anzeigen
2 Warum steht bei mir nur das er Aktiviert wurde und bei wem anderes nur das er ausgemacht wurde ?
ocmd:einsatz(playerid)
{
if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist kein SEK Mitglied.");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pInfo[i][pEingeloggt] == 0) continue;
if(GetPlayerFrakID(i) != 2) continue;
if(Einsatz == 0)
{
SendClientMessage(i,BLAU,"---> Achtung ein Einsatz wurde autorisiert <---");
Einsatz = 1;
}
else
{
SendClientMessage(i,BLAU,"---> Achtung der Einsatzbefehl wurde deklariert <---");
Einsatz = 0;
}
}
return 1;
}
Alles anzeigen
Hallo,
ich habe eine kurze Frage, bei der Funktion TogglePlayerSpectating kann es sein das man gekickt wird?
Habe bei RequestClass eingeschaltet, damit die Spawnbuttons sich entfernen.
Sobald die Playerdaten geladen wurden habe ich dies auf false gesetzt und werde gekickt.
Code:
public OnPlayerRequestClass(playerid, classid)
{
TogglePlayerSpectating(playerid, true);
return 1;
}
function LadeAccount(playerid)
{
new num_fields, num_rows;
cache_get_data(num_rows, num_fields, handle);
if(num_rows == 1)
{
pData[playerid][p_ID] = cache_get_field_content_int(0, "id", handle);
pData[playerid][pLevel] = cache_get_field_content_int(0, "Level", handle);
pData[playerid][pGeld] = cache_get_field_content_int(0, "Geld", handle);
pData[playerid][pAdmin] = cache_get_field_content_int(0, "Admin", handle);
TogglePlayerSpectating(playerid, false);
}
return 1;
}
Alles anzeigen
Ich verstehe nicht warum ich gekickt werde :o
Kann mir einer Helfen?
Wird in der console was ausgegeben ?
Wird in der console was ausgegeben ?
nein nichts...
Füge mal paar prints ein, habe wirklich alle Kick funktionen erstmal rausgenommen um sicher zu gehen ![]()
//Edit:
@reaL.
Versuch mal dies so zu ändern:
if(Masked[playerid] == true)
{
ShowPlayerNameTagForPlayer(playerid, i, 1);
SendClientMessage(playerid,BLAU,"Du hast deine Maske abgesetzt.");
}
Außerdem kannst du auch beim Callback OnPlayerStreamIn folgendes eintragen:
Hm hast du ein Anti-Cheat drinne ?
Alles anzeigenHey ich habe 2 kleine Anliegen
1 warum sieht man mein Namen immernoch ?
CodeAlles anzeigenocmd:maske(playerid) { if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist Kein SEK Mitglied."); if(Einsatz != 1) return SendClientMessage(playerid,BLAU,"Es wurde kein Einsatz autorisiert!"); if(pInfo[playerid][pSekduty] != 1) return SendClientMessage(playerid,BLAU,"Du bist nicht im Dienst!"); for(new i=0; i<MAX_PLAYERS; i++) { if(Masked[playerid] == true) { ShowPlayerNameTagForPlayer(i, playerid, 1); SendClientMessage(playerid,BLAU,"Du hast deine Maske abgesetzt."); Masked[playerid] = false; return 1; } else { ShowPlayerNameTagForPlayer(playerid, i, 0); SendClientMessage(playerid,BLAU,"Du hast deine Maske aufgesetzt."); Masked[playerid] = true; return 1; } } return 1; }
2 Warum steht bei mir nur das er Aktiviert wurde und bei wem anderes nur das er ausgemacht wurde ?
CodeAlles anzeigenocmd:einsatz(playerid) { if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist kein SEK Mitglied."); for(new i=0; i<MAX_PLAYERS; i++) { if(pInfo[i][pEingeloggt] == 0) continue; if(GetPlayerFrakID(i) != 2) continue; if(Einsatz == 0) { SendClientMessage(i,BLAU,"---> Achtung ein Einsatz wurde autorisiert <---"); Einsatz = 1; } else { SendClientMessage(i,BLAU,"---> Achtung der Einsatzbefehl wurde deklariert <---"); Einsatz = 0; } } return 1; }
Benutze:
Und probier mal:
ocmd:einsatz(playerid)
{
if(pInfo[playerid][pEingeloggt] == 0) continue;
if(!(GetPlayerFrakID(playerid) == 2)) return SendClientMessage(playerid, BLAU, "Du nix Cop!");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pInfo[i][pEingeloggt] == 0) continue;
if(GetPlayerFrakID(i) == 2)
{
if(Einsatz == 0)
{
SendClientMessage(i, BLAU, "---> Achtung ein Einsatz wurde autorisiert <---");
Einsatz = 1;
}
else
{
SendClientMessage(i, BLAU, "---> Achtung der Einsatzbefehl wurde deklariert <---");
Einsatz = 0;
}
}
}
return 1;
}
Alles anzeigen
kann es sein das man gekickt wird?
Nutze vor TogglePlayerSpectating die Funktion SetSpawnInfo.
Hey du weißt das dort Nirgends was mit ShowMarkers steht ?
setz deine Lese Brille auf kenne das Problem ![]()
![]()
Probier ich nachher mal
Hey du weißt das dort Nirgends was mit ShowMarkers steht ?
setz deine Lese Brille auf kenne das Problem
Probier ich nachher mal
Fail, dann benutze mal
Alles anzeigenHey ich habe 2 kleine Anliegen
1 warum sieht man mein Namen immernoch ?
CodeAlles anzeigenocmd:maske(playerid) { if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist Kein SEK Mitglied."); if(Einsatz != 1) return SendClientMessage(playerid,BLAU,"Es wurde kein Einsatz autorisiert!"); if(pInfo[playerid][pSekduty] != 1) return SendClientMessage(playerid,BLAU,"Du bist nicht im Dienst!"); for(new i=0; i<MAX_PLAYERS; i++) { if(Masked[playerid] == true) { ShowPlayerNameTagForPlayer(i, playerid, 1); SendClientMessage(playerid,BLAU,"Du hast deine Maske abgesetzt."); Masked[playerid] = false; return 1; } else { ShowPlayerNameTagForPlayer(playerid, i, 0); SendClientMessage(playerid,BLAU,"Du hast deine Maske aufgesetzt."); Masked[playerid] = true; return 1; } } return 1; }
2 Warum steht bei mir nur das er Aktiviert wurde und bei wem anderes nur das er ausgemacht wurde ?
CodeAlles anzeigenocmd:einsatz(playerid) { if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist kein SEK Mitglied."); for(new i=0; i<MAX_PLAYERS; i++) { if(pInfo[i][pEingeloggt] == 0) continue; if(GetPlayerFrakID(i) != 2) continue; if(Einsatz == 0) { SendClientMessage(i,BLAU,"---> Achtung ein Einsatz wurde autorisiert <---"); Einsatz = 1; } else { SendClientMessage(i,BLAU,"---> Achtung der Einsatzbefehl wurde deklariert <---"); Einsatz = 0; } } return 1; }
Möchtest du die Variable Global haben?
Dann kann jeder Spieler das System ein/ausschalten?
Wenn ja müsste es so aussehen:
new Einsatz = 0;
ocmd:einsatz(playerid)
{
if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist kein SEK Mitglied.");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pInfo[i][pEingeloggt] == 0) continue;
if(GetPlayerFrakID(i) != 2) continue;
if(Einsatz == 0)
{
SendClientMessage(i,BLAU,"---> Achtung ein Einsatz wurde autorisiert <---");
Einsatz = 1;
}
else
{
SendClientMessage(i,BLAU,"---> Achtung der Einsatzbefehl wurde deklariert <---");
Einsatz = 0;
}
}
return 1;
}
Alles anzeigen
Wenn nein dann so:
new Einsatz[MAX_PLAYERS];
ocmd:einsatz(playerid)
{
if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist kein SEK Mitglied.");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pInfo[i][pEingeloggt] == 0) continue;
if(GetPlayerFrakID(i) != 2) continue;
if(Einsatz[playerid] == 0)
{
SendClientMessage(i,BLAU,"---> Achtung ein Einsatz wurde autorisiert <---");
Einsatz[playerid] = 1;
return 1;
}
else if(Einsatz[playerid] == 1)
{
SendClientMessage(i,BLAU,"---> Achtung der Einsatzbefehl wurde deklariert <---");
Einsatz[playerid] = 0;
return 1;
}
}
return 1;
}
Alles anzeigen
Hm hast du ein Anti-Cheat drinne ?
Nein, schreibe habe das AntiCheat System rausgenommen da ich auch gedacht hatte das es da liegen könnte ![]()
Nutze vor TogglePlayerSpectating die Funktion SetSpawnInfo.
Dank dir @Jeffry, ich hing immer bei AddPlayerClass.
Funktioniert jetzt aber mit SetSpawnInfo ![]()