@fishy:
Es wird nur geprüft ob MullCar[1] == GetPlayerVehicleID(playerid) ist danach wird es abgebrochen.
[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
-
-
Coldman:
Gutes adminsystem:
MySQL Datenbank + AdminLevel bei dem Userdaten + PlayerInfo[playerid][pAdminLevel] und dann kannst du ein System erstellen.dann kannst du abfragen if(IsAnAdmin(playerid))
Sonst fällt mir nicht mehr an was man als stock gebrauchen könnteKann ich das so verwenden?
-
sofern du das MySQL plugin hast und genau so installiert wie in Jeffrys tutorial, ja.
danke real
-
-
Hey, möchte von einem Array aus Fahrzeuge erstellen. Ich mache irgendwas falsch :>
new Float:vSpawn[][4] =
{
{680.47, -2701.11, 5.63, 84.49},
{579.42, -2800.48, 5.63, 84.49},
{589.07, -2617.21, 5.63, 84.49},
{511.48, -2881.83, 5.63, 84.49},
{785.75, -2831.08, 5.63, 84.49},
{758.51, -2624.00, 5.63, 84.49},
{476.99, -2700.88, 5.63, 84.49}};
public OnFilterScriptInit()
{CreateVehicle(520, vSpawn[0], vSpawn[1], vSpawn[2], vSpawn[3], -1, -1, 120, 1); //error line
EventStarted = false;
CreateMapObjects();
SendClientMessageToAll(-1,"Event System {00FF00}loaded!");
return 1;
}(123) : error 035: argument type mismatch (argument 2)
-
-
-
for(new i; i<sizeof(vSpawn); i++)
{
eventvehicle[i] = CreateVehicle(520, vSpawn[i][0], vSpawn[i][1], vSpawn[i][2], vSpawn[i][3], -1, -1, 120, 1);
}for(new i; i<sizeof(vSpawn); i++)
{
DestroyVehicle(eventvehicle[i]);
} -
Dankeschön @Jeffry
Letzte Frage für Heute:
Möchte per Dialog einstellen wie viel HP ein Spieler bei einem Event gesetzt bekommt, dafür nutze ich ein Dialog.
Nur weiß ich nicht wie ich Input-Text korrekt verwende, aktuell sieht alles so aus, nur fehlt halt die Inputtext Funktion.
//Standard kriegt der Spieler 100 HP beim betreten.
new eventhealth = 100;Spieler betretet event:
SetPlayerHealth(playerid, eventhealth);Dialog:
if(dialogid == D_HEALTHCFG && response == 1)
{
eventhealth = inputtext; //wie frage ich hier den Inputtext ab?
} -
new eventhealth = 100;
Mach das mal zu:
new Float:eventhealth = 100.0;//Und beim inputtext:
eventhealth = floatstr(inputtext); -
if(dialogid == D_HEALTHCFG && response == 1)
{
new string[64];
eventhealth = floatstr(inputtext);
format(string, sizeof(string),"You've set the Event Health to %f",inputtext);
SendClientMessage(playerid, -1, string);}
Egal was ich eingebe, es erscheint immer die Nachricht das dass Health auf 0.00000 gesetzt wurde.
-
format(string, sizeof(string),"You've set the Event Health to %f",inputtext);
Zu
format(string, sizeof(string),"You've set the Event Health to %f",eventhealth); -
Jetzt klappt's, danke euch zwei.
Gibt's auch eine Möglichkeit wie ich abfragen kann ob er Zahlen eingegeben hat oder nicht?
-
Ja, mit IsNumeric:
stock IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
} -
Okay, funktioniert perfekt.
Beim senden von Error Meldungen möchte ich immer das Dialogfeld erneut zeigen, muss ich dafür immer erneut ShowPlayerDialog verwenden oder kann man das auch einfacher lösen?
Beispiel:
if(dialogid == D_HEALTHCFG && response == 1)
{
if(!IsNumeric(inputtext))
{
ShowPlayerDialog(playerid, D_HEALTHCFG, DIALOG_STYLE_INPUT, "Event Health", "Please set the Event Health.", "OK", "");
return SendClientMessage(playerid, -1,"Only numbers here!");
}
if(strval(inputtext) < 1 || strval(inputtext) > 100)
{
ShowPlayerDialog(playerid, D_HEALTHCFG, DIALOG_STYLE_INPUT, "Event Health", "Please set the Event Health.", "OK", "");
SendClientMessage(playerid, -1, "Event Health: Min 1 / Max 100.");
return 1;
}new string[64];
eventhealth = floatstr(inputtext);
format(string, sizeof(string),"You've set the Event Health to {FF0000}%0.2f",eventhealth);
SendClientMessage(playerid, -1, string);}
-
Dazu musst du immer den Dialog wieder anzeigen lassen, da dieser automatisch verschwindet, wenn ein Button gedrückt wird.
-
Alles klar, verstehe.
Noch ne kleine Frage (:D)
Wie kann ich da wo #EventHealth steht, die aktuelle Nummer der Variable anzeigen lassen?
CMD:ecfg(playerid,params[])
{
ShowPlayerDialog(playerid, D_EVENTCFG, DIALOG_STYLE_TABLIST_HEADERS, "Event Configuration",
"Name\tStatus\tType\n\
Max Players\t100\tINPUT\n\
Health\t"#eventhealth"\tINPUT\n\
Armour\t100\tINPUT\n\
Skin\t67\tINPUT\n\
HP Regain\t25\tINPUT\n\
Nametags\tOFF\tBOOLEAN\n\
Vehicles\tON\tBOOLEAN","OK", "");
return 1;
}Wenn z.B. die Variable so ausschaut new Float:eventhealth = 100.0; soll im Dialog auch die 100 (oder 100.0) angezeigt werden.
-
Den string für ShowPlayerDialog mit format formatieren (wie zuvor die Nachricht) und mit %f bzw. %0.1f die Variable verknüpfen.
-
Wie formatiere ich den denn, welchen string?
Oder muss ich den Dialog einmal in strcat umschreiben?
-
format(string, sizeof(string), "Name\tStatus\tType\n\
Max Players\t100\tINPUT\n\
Health\t%0.1f\tINPUT\n\
Armour\t100\tINPUT\n\
Skin\t67\tINPUT\n\
HP Regain\t25\tINPUT\n\
Nametags\tOFF\tBOOLEAN\n\
Vehicles\tON\tBOOLEAN", eventhealth);
ShowPlayerDialog(playerid, D_EVENTCFG, DIALOG_STYLE_TABLIST_HEADERS, "Event Configuration","OK", "");

