Kannst es auch ohne das Include machen.
SetTimerEx("KickPublic", 600, false, "d", playerid);forward KickPublic(playerid);public KickPublic(playerid){Kick(playerid);return 1;}
Dann kannst du das Kick(playerid) im PlayerLoginTimer löschen
---------------------
Wie kann ich hier noch die Befehle loggen die ich per OCMD erstellt habe?
public OnPlayerCommandText(playerid, cmdtext[])
{
new String[512], logtext[256];
format(String, sizeof(String), ""SERVER_HTML"Server: "HTML_WEIS"Der Befehl ( %s ) existiert nicht. Benutze /help", cmdtext);
new FileName[64];
format(FileName, sizeof(FileName), "/ServerLogs/SpielerCommandLog/%s.txt", Spieler[playerid][pName]);
new File:SpielerCommandLog = fopen(FileName, io_append);
format(logtext, sizeof(logtext), "[%d.%d.%d][%d:%d:%d Uhr] Befehl: %s \r\n", Tag, Monat, Jahr, Stunde, Minute, Sekunde, cmdtext);
fwrite(SpielerCommandLog, logtext);
fclose(SpielerCommandLog);
return SendClientMessage(playerid, -1, String);
}
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Moinsen,
wollte bei einem Feuer System gerne mit einbinden das auch der Feuerwehr Wagen (Fahrzeug ID 407) auch löschen kann und nicht nur Feuerlöscher. Kriegs aber irgendwie nicht geschissen.
Das ist die Zeile wo die Waffe ausgezahlt wird. Krieg aber es nicht geschissen: " IsPlayerInVehicle(playerid, 407)" mit einzubinden.
-
if(GetPlayerVehicleId(playerid) == 407))
-
if(GetPlayerVehicleId(playerid) == 407))
Würde beides gerne verwenden Sowohl GetPlayerVehicleId als auch GetPlayerWeapon.
-
if(GetVehicleModel(GetPlayerVehicleID (playerid)) == 407 || GetPlayerWeapon(playerid) == 42))
-
Würde beides gerne verwenden Sowohl GetPlayerVehicleId als auch GetPlayerWeapon.
über Handy gesendet
-
Ich fühl mich grad leicht Dumm... habs so gestern probiert und merke gerade das ich eine Klammer vergessen hatte... ich idiot, danke
-
Leute...vehicleid != vehiclemodel.
Ich glaube ihr wollt:
GetVehicleModel(GetPlayerVehicleID (playerid))
-
Wie kann ich am besten eine Jobsperre in Spieler[playerid][pJobSperre] speichern.
Und wie kann ich abfragen ob sie schon abgelaufen ist -
atmInfo[id][Object3D] = Create3DTextLabel("{F3FF02}Du kannst den Geldautomaten\nmit der Entertaste verwenden.", COLOR_WHITE, atmInfo[id][aPickupX], atmInfo[id][aPickupY], atmInfo[id][aPickupZ]+0.15, 10.0, 0, 0);
Destroy3DTextLabel(atmInfo[atmid][Object3D]);
C:\Users\Patrick\Desktop\- (17.09.2018)\gamemodes\German.pwn(17431) : error 017: undefined symbol "Destroy3DTextLabel"
Geht das ganze nur mit Dynamic oder sehe ich das falsch?
-
atmInfo[id][Object3D] = Create3DTextLabel("{F3FF02}Du kannst den Geldautomaten\nmit der Entertaste verwenden.", COLOR_WHITE, atmInfo[id][aPickupX], atmInfo[id][aPickupY], atmInfo[id][aPickupZ]+0.15, 10.0, 0, 0);
Destroy3DTextLabel(atmInfo[atmid][Object3D]);
C:\Users\Patrick\Desktop\- (17.09.2018)\gamemodes\German.pwn(17431) : error 017: undefined symbol "Destroy3DTextLabel"
Geht das ganze nur mit Dynamic oder sehe ich das falsch?
Such doch mal selber... das ist nicht schwer.
Die Funktion heißt Delete3DTextLabel.
-
error 036: empty statement
In der Include:
#define ResetMetersTraveled(%0) E@_R[%0] = 0;
zu:
#define ResetMetersTraveled(%0) E@_R[%0] = 0 -
In der Include:#define ResetMetersTraveled(%0) E@_R[%0] = 0;
zu:
#define ResetMetersTraveled(%0) E@_R[%0] = 0Vielen Dank
Ich habe jetzt folgendes "Problem" ... Ich komme gerade nicht auf die Lösung ...
Sobald ich den Motor anschalte (/motor) startet ein Timer ... das dazugehörige Callback sieht wie folgt aus:
Code
Alles anzeigenpublic setKiloMeter(playerid){ new vID = getCarID(playerid), string[256]; if(vID == INVALID_VEHICLE_ID)return 0; cInfo[vID][kmstand] += GetKilometers(GetPlayerVehicleID(playerid)); format(string, sizeof(string), "%0.2f km", cInfo[vID][kmstand]); TextDrawSetString(Tacho_TD[6], string); printf("%0.2f", cInfo[vID][kmstand]); printf("FAHRZEUGID: %i", cInfo[vID][id_x]); printf("vID: %i", vID); ResetMetersTraveled(GetPlayerVehicleID(playerid)); return 1; }
Das Problem ist jetzt, dass der Float wert der raus kommt (cInfo[vID][kmstand]) ... wie folgt aussieht: 1316049920.00
Was mir noch aufgefallen ist: Ich sitze im Spiel im Fahrzeug mit der ID: 5 ... Ich lasse ja cInfo[vID][id_x] printen und vID ... cInfo[vID][id_x] gibt in der Konsole eine 5 aus ... vID jedoch gibt eine 3 aus... Woran liegt das ?
GetCarID:
Codestock getCarID(playerid){ for(new i = 0; i < sizeof(cInfo); i++){ new vID = GetPlayerVehicleID(playerid); if(cInfo[i][id_x] == vID) return i; } return INVALID_VEHICLE_ID; }
Ich hoffe das ist eine "kleine" Scripting frage
-
Float wert
Die Include arbeitet nicht mit Floats, nur mit ganzen Zahlen.
Lass dir mal mit %i den Wert von GetKilometers direkt printen.Was mir noch aufgefallen ist: Ich sitze im Spiel im Fahrzeug mit der ID: 5 ... Ich lasse ja cInfo[vID][id_x] printen und vID ... cInfo[vID][id_x] gibt in der Konsole eine 5 aus ... vID jedoch gibt eine 3 aus... Woran liegt das ?
Das ist richtig so. Dein vID ist in dem Fall ja der Index, mit dem auf cInfo zugegriffen wird, um auf die richtige vehicleid zu kommen.
-
Die Include arbeitet nicht mit Floats, nur mit ganzen Zahlen.Lass dir mal mit %i den Wert von GetKilometers direkt printen.
Das ist richtig so. Dein vID ist in dem Fall ja der Index, mit dem auf cInfo zugegriffen wird, um auf die richtige vehicleid zu kommen
Also leider gehts auch nicht mit %i ... da kommt halt in der Console folgendes raus: 1318926965Ich hab folgenden callback nun:
Codepublic setKiloMeter(playerid){ new vID = getCarID(playerid), string[256]; if(vID == INVALID_VEHICLE_ID)return 0; cInfo[vID][kmstand] += GetKilometers(GetPlayerVehicleID(playerid)); format(string, sizeof(string), "%i km", cInfo[vID][kmstand]); TextDrawSetString(Tacho_TD[6], string); printf("%i", cInfo[vID][kmstand]); ResetMetersTraveled(GetPlayerVehicleID(playerid)); return 1; }
-
Printe bitte das GetKilometers direkt, nicht das Array.
-
Printe bitte das GetKilometers direkt, nicht das Array.
Das ergebnis: 1012202996
Das ist komisch irgendwie ... Das Callback wird jede Sekunde aufgerufen.
Codepublic setKiloMeter(playerid){ new vID = getCarID(playerid), string[256]; if(vID == INVALID_VEHICLE_ID)return 0; cInfo[vID][kmstand] += GetKilometers(GetPlayerVehicleID(playerid)); format(string, sizeof(string), "%i km", cInfo[vID][kmstand]); TextDrawSetString(Tacho_TD[6], string); printf("%i", GetKilometers(GetPlayerVehicleID(playerid))); ResetMetersTraveled(GetPlayerVehicleID(playerid)); return 1; }
-
Dann gibt die Funktion das falsch zurück. Was hast du denn in der Include noch angepasst? Nicht, dass dadurch ein falscher Wert zustande kommt.
-
Dann gibt die Funktion das falsch zurück. Was hast du denn in der Include noch angepasst? Nicht, dass dadurch ein falscher Wert zustande kommt.
Ich habe nix angepasst, habe nur bei den Zeilen die als "Loose Identation" angegeben wurden, eingerückt. Allerdings nix entfernt oder bearbeitet. Ansonsten nur das was du sagtest mit dem ResetMetersTraveled... Das lustige ist ja: wenn ich es als %0.2f mache ... dann kommen Werte wie: 0.01, 0.02, 0.03 usw. raus.
Codepublic setKiloMeter(playerid){ new vID = getCarID(playerid), string[256]; if(vID == INVALID_VEHICLE_ID)return 0; cInfo[vID][kmstand] += GetKilometers(GetPlayerVehicleID(playerid)); format(string, sizeof(string), "%i km", cInfo[vID][kmstand]); TextDrawSetString(Tacho_TD[6], string); printf("%0.2f", GetKilometers(GetPlayerVehicleID(playerid))); ResetMetersTraveled(GetPlayerVehicleID(playerid)); return 1; }
//EDIT ich habe das Problem gelöst... Lösung:
Ich habe in meinem Enum für cInfo bei kmstand ein Float: vor geschrieben. Nun lasse ich die Werte auch als Float in die Datenbank speichern und nun funktioniert auch das Addieren.
MfG
XonarZ -
Ich habe in meinem Enum für cInfo bei kmstand ein Float: vor geschrieben. Nun lasse ich die Werte auch als Float in die Datenbank speichern und nun funktioniert auch das Addieren.
Ok, gut dass du es selbst lösen konntest! Meine Annahme, dass es ein Integer ist, war falsch, sorry dafür. Das ist allerdings in der Include auch schlecht bzw. falsch gemacht, denn die Variable ist ein Integer, die Funktion wird ebenfalls im native als Integer angegeben, im Makro allerdings wird der Wert *0.001 genommen, was es ein Float macht.
Am besten du schreibst der Vollständigkeit halber in der Include, bei den natives (im Kommentar ganz oben) GetKilometers und GetMiles noch "Float:" davor. Dann ist es klar.
Dass in der Include aber aus einem Float erst ein Integer gemacht wird, und anschließend wieder in ein Float umgewandelt wird, ist ungeschickt. Funktioniert zwar, ist aber nicht schön (kannst du aber natürlich nichts dafür).