Was passiert wenn du die y_globaltags.inc Datei in den selben Ordner wie die y_natives.inc Datei zu verschieben.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Wieso wird mein print nicht aufgerufen ( der 2 Print ) ?
for(new i = 0; i < sizeof(FCarKeys); i++)
zu:
for(new i = 0; i < sizeof(FCarKeys[]); i++)Damit er das zweite Array nimmt, und nicht dessen Größe, wo "veh" drin steht.
-
@N1co es wird ja geladen aber nicht auf dem richtigen array gespeichert, @Jeffry könntest du mir vielleicht helfen? Würde gerne Fahrzeuge aus der Datenbank laden und dann ganz einfach bei befehlen abfragen, ich weiß aber nicht wie:
Code
Alles anzeigenstock LoadVehs() { new rows,fields; new Cache:Vehs = mysql_query(handle, "SELECT * FROM `fahrzeuge`",true); cache_get_data(rows,fields); for(new i=0;i<rows;i++) { Vehicle[i][VID] = cache_get_field_content_int(i, "id"); Vehicle[i][fModel] = cache_get_field_content_int(i, "modelid"); Vehicle[i][fSposX] = cache_get_field_content_float(i, "sPos-X"); Vehicle[i][fSposY] = cache_get_field_content_float(i, "sPos-Y"); Vehicle[i][fSposZ] = cache_get_field_content_float(i, "sPos-Z"); Vehicle[i][fSposO] = cache_get_field_content_float(i, "sPos-O"); Vehicle[i][fColor1] = cache_get_field_content_int(i, "color_1"); Vehicle[i][fColor2] = cache_get_field_content_int(i, "color_2"); Vehicle[i][fSirene] = cache_get_field_content_int(i, "sirene"); Vehicle[i][fFrak] = cache_get_field_content_int(i, "fraktion_id"); Vehicle[i][fFuel] = cache_get_field_content_int(i, "tank"); cache_get_field_content(i,"besitzer", Vehicle[i][fOwner],handle,64); cache_get_field_content(i,"lastdriver", Vehicle[i][fLastDriver],handle,64); cache_get_field_content(i,"2besitzer", Vehicle[i][fSecond_Owner],handle,64); cache_get_field_content(i,"plate", Vehicle[i][fPlate],handle,32); SetVehicleParamsEx(i, false, false, false, false, false, false, false); new cCarID = 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]); new numberplate[256]; format(numberplate, sizeof (numberplate), "%s %d", Vehicle[i][fPlate], Vehicle[i][VID]); SetVehicleNumberPlate(cCarID, numberplate); if (Vehicle[i][fFrak] == 3) { if (Vehicle[i][fModel] == 560) { SireneSAMD[i] = CreateObject(19419, 0.00, 0.20, 0.85, 0.00, 0.00, 0.00, 50.0); AttachObjectToVehicle(SireneSAMD[i], cCarID, 0.00, 0.00, 0.81, 0, 0, 0); } } } cache_delete(Vehs); print("Vehicles Spawned"); return 1; }
-
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.Code
Alles anzeigenforward 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; }
-
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:
Codeif(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..
-
Beitrag von reaL. ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Hey ich habe 2 kleine Anliegen
1 warum sieht man mein Namen immernoch ?Code
Alles 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 ?Code
Alles 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; }
-
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:
Codepublic OnPlayerRequestClass(playerid, classid) { TogglePlayerSpectating(playerid, true); return 1; }
Code
Alles anzeigenfunction 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; }
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:Codeif(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 ?
-
Hey ich habe 2 kleine Anliegen
1 warum sieht man mein Namen immernoch ?Code
Alles 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 ?
Code
Alles 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:
Code
Alles anzeigenocmd: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; }
-
kann es sein das man gekickt wird?
Nutze vor TogglePlayerSpectating die Funktion SetSpawnInfo.