![](https://breadfish.de/wcf/images/avatars/66/6367-66d4c19ac95a4c2c9e966f75d1605cd7c010b8e4.png)
Beitrag von YaBroo ()
Dieser Beitrag wurde vom Autor gelöscht ().
Hey.
Meine Mathematischen Kenntnisse wollen grad nicht so wirklich anspringen...
Ich habe einmal die "Variable" um den maximalen Speicher an Tank von einem Fahrzeug herauszufinden, und die Variable für den aktuellen Tank.
Ich möchte einen Benzin-Kanister Befehl erstellen.
Dieser hat 5 Liter Inhalt.
Der Kanister soll nur funktionieren solange das Fahrzeug weniger als 5Liter vom maximalen Tank hat.
Also, idk wie ich das beschreiben soll.
Fahrzeug hat 30 Liter maximalen Tank.
Fahrzeug hat aktuell 27 Liter, Kanister funktioniert nicht.
Kanister Funktioniert bspw. erst ab 25.00 Liter.
Die Variablen sind wie folgt:
VehicleData[GetVehicleModel(vehicleid)-400][vehMaxTank]
// und:
Vehicle[vehicleid][vehFuel]
@Jeffry ♥
if(Vehicle[vehicleid][vehFuel]+5 > VehicleData[GetVehicleModel(vehicleid)-400][vehMaxTank]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Tank zu voll.");
Danke @Jeffry , funktioniert bisher sehr gut :)!
Habe noch eine kleine Frage, habe ein Befehl erstellt um den Server zu sperren / entsperren (Passwort). Der funktioniert, nur ist die Nachicht irgendwie komisch.
So schaut der Befehl aus:
CMD:lock(playerid, params[]) {
new cQuery[128];
if(pData[playerid][P_Admin] < 6) return
SendClientMessage(playerid, COLOR_RED, LV_Fail);
if(params[0] != '\0') {
format(cQuery, sizeof(cQuery), "password %s", params[0]);
SendRconCommand(cQuery);
format(cQuery, sizeof(cQuery), "Server has been locked by %s%s", GetPlayerColor(playerid) >>> 8, GetName(playerid));
}
else {
SendRconCommand("password 0");
format(cQuery, sizeof(cQuery), "Server has been unlocked by %s%s", GetPlayerColor(playerid) >>> 8, GetName(playerid));
}
SendClientMessageToAll(COLOR_ORANGE, cQuery);
return 1;
}
und so die Nachicht (komische Buchstaben):
Ich habe das Gefühl das liegt irgendwie an GetPlayerName, oder?
%s%s
Zu
{%06x}%s
if(Vehicle[vehicleid][vehFuel]+5 > VehicleData[GetVehicleModel(vehicleid)-400][vehMaxTank]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Tank zu voll.");
Danke
Hab noch ein Problem:
if(!(Spieler[playerid][pJob] == 2) || !(Spieler[playerid][pFraktion] == 1))return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Beamter/Detektiv.");
Habe pJob = 2, es kommt ich bin kein Beamter/Detektiv.
Ich bin pFraktion = 1, es funktioniert.
Hmm ..
Wann soll denn die Nachricht kommen?
Das mit den komischen Buchstaben ist nun behoben, danke
Nur entsperrt sich der Server nicht wenn ich nur /lock eingebe, was habe ich da faslch gemacht?
Versuche es mit
if(params[0] != '\0') {
Zu
if(strlen(params)) {
Oder
if(strlen(params) > 1) {
Hmm scheint nicht zu funktionieren, es wird immer nur der Server gesperrt. Befehl schaut so aus:
CMD:lock(playerid, params[]) {
new cQuery[128];
if(pData[playerid][P_Admin] < 6) return
SendClientMessage(playerid, COLOR_RED, LV_Fail);
if(strlen(params)) {
format(cQuery, sizeof(cQuery), "password %s", params[0]);
SendRconCommand(cQuery);
format(cQuery, sizeof(cQuery), "Server has been locked by {%06x}%s ", GetPlayerColor(playerid) >>> 8, GetName(playerid));
}
else {
SendRconCommand("password 0");
format(cQuery, sizeof(cQuery), "Server has been unlocked by {%06x}%s ", GetPlayerColor(playerid) >>> 8, GetName(playerid));
}
SendClientMessageToAll(COLOR_ORANGE, cQuery);
return 1;
}
Hast du es mit der zweiten Methode versucht?
Bei der zweiten Methode erhalte ich folgende Errors:
C:\Users\David\Desktop\LnD\gamemodes\main.pwn(2957) : warning 217: loose indentation
C:\Users\David\Desktop\LnD\gamemodes\main.pwn(2959) : warning 209: function "cmd_lock" should return a value
C:\Users\David\Desktop\LnD\gamemodes\main.pwn(2960) : error 010: invalid function or declaration
C:\Users\David\Desktop\LnD\gamemodes\main.pwn(2965) : error 021: symbol already defined: "SendClientMessageToAll"
C:\Users\David\Desktop\LnD\gamemodes\main.pwn(2966) : error 010: invalid function or declaration
Pawn compiler 3.10.20150531 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Dann hast du nach der Klammer zu die geschweifte Klammer entfernt. War etwas ungeschickt von mir gepostet, einmal mit und einmal ohne die Klammer, sorry.
Also so:
if(strlen(params) > 1) {
Danke, klappt nun
Wie kann ich Dinge in einem Dialog updaten ohne ihn selber schließen und wieder öffnen zu müssen?
Hiermit zum Beispiel:
[jTuT] Interaktive Dialoge
Im Prinzip macht das aber nichts anderes, da es keine Update Funktion für Dialoge gibt.
Vom Prinzip her gleich, du müsstest den Code eben an Message Boxen anpassen.
Es muss eben ein Timer laufen, der den Text immer wieder dem Spieler anzeigt, solange er den Dialog offen hat.