Den string für ShowPlayerDialog mit format formatieren (wie zuvor die Nachricht) und mit %f bzw. %0.1f die Variable verknüpfen.
[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
-
-
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", ""); -
Was genau habe ich dort falsch
Habe das aus nem anderen Gamemode und abgeändert wie ich wollte, new's übernommen und sonstiges Stocks, jetzt versteh ich nicht wieso ReturnUser spinnt.Code
Alles anzeigenif(strcmp(cmd, "/givegun", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_BEFEHL, "/givegun [playerid/PartOfName] [weaponid] [ammo]"); return 1; } new playa; new gun; new ammo; playa = ReturnUser(tmp); // Line 312 tmp = strtok(cmdtext, idx); gun = strval(tmp); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_BEFEHL, "/givegun [playerid/PartOfName] [weaponid] [ammo]"); return 1; } if(gun < 1||gun==36||gun==37||gun==38||gun==39|| gun==35 || gun==40 || gun==16 || gun==8) { SendClientMessage(playerid, COLOR_ERROR, "* Du darfst diese Waffen nicht verwenden!"); return 1; } tmp = strtok(cmdtext, idx); ammo = strval(tmp); if(ammo <1||ammo > 10000) { SendClientMessage(playerid, COLOR_ERROR, "* Du kannst dir nicht mehr als 10000 Munition geben!"); return 1; } if (PlayerInfo[playerid][pAdminLevel] < 1) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GivePlayerWeapon(playa, gun, ammo); GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, pname, sizeof(pname)); format(string, 256, "[ADMIN]: %s hat %s eine Waffe gegeben.",pname, giveplayer); print(string); new msgstring[256]; format(msgstring, sizeof (msgstring), "%s hat dir eine %s mit %d Munition gegeben." } else { SendClientMessage(playerid, COLOR_ERROR, "* Der Spieler ist nicht online!"); } } } else { SendClientMessage(playerid, COLOR_ERROR, "* Du bist kein Admin"); } } return 1; }
-
Du hast in Zeile 40 das ); vergessen...
-
Ja ehm selbe Problem bleibt trotzdem da der Compiler nichtmal so weit gekommen ist, ReturnUser funktioniert immer noch nicht
-
Wie sieht denn deine ReturnUser Funktion aus?
-
Das ist es ja, ich hab keine, konnte nicht finden wo die im anderen Script war obwohl ich das alles nachgeschaut habe, ist wahrscheinlicher in einer Include die ich nicht kenne.
Dachte zuerst es sei eine Variable aber ist es wohl nicht
-
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}Benenne den stock falls du willst zu ReturnUser um.
-
-
-
Ist der Fehler weg, wenn du diese Zeile auskommentierst?
-
Ja sind aber andere Fehler da weil ich vergessen habe was zu definieren
-
Dann solltest du diese erst mal entfernen, eventuell liegt der Error an dieser Stelle einfach nur daran, dass bereits vorher oder woanders Fehler sind.
-
Hab ein Problem mit meinem Biz System und zwar in dem Abschnitt
Code
Alles anzeigenstock IsBusinessCreated(businessid) { new query[200]; format(query, sizeof(query), "SELECT * FROM `firma` WHERE ID = %i", businessid); mysql_tquery(dbhandle,query); mysql_free_result(); new rows = mysql_num_rows(); mysql_free_result(); if(!rows) return false; else return true; return 1; } stock IsBusinessOwned(businessid) { new query[200]; format(query, sizeof(query), "SELECT Besitzer FROM 'firma' WHERE ID = %i", businessid); mysql_tquery(dbhandle,query); mysql_free_result(); new rows = mysql_num_rows(); mysql_free_result(); if(!rows) return false; else return true; return 1; }
Bekomme ich diese Errors
bräuchte hilfe beim umschreiben
-
Hmm, wie formatiere ich den Boolean korrekt?
Wenn eventvehicles auf true ist, sollte dort angeschaltet stehen, bei false ausgeschaltet..ECFGMENU(playerid)
{
new string[256];
format(string, sizeof(string), "Name\tStatus\tType\n\
Max Players\t100\tINPUT\n\
Health\t%0.1f\tINPUT\n\
Armour\t%0.1f\tINPUT\n\
Skin\t%d\tINPUT\n\
HP Regain\t%0.1f\tINPUT\n\
Vehicles\t%s\tBOOLEAN\n\ //Hier
Nametags\tON\tBOOLEAN", eventhealth, eventarmour, eventskin, eventhpregain, eventvehicles);
ShowPlayerDialog(playerid, D_EVENTCFG, DIALOG_STYLE_TABLIST_HEADERS, "Event Configuration",string,"OK", "");
}if(dialogid == D_EVENTVEHICLES && response == 1)
{switch(listitem)
{
case 0: for(new i; i<sizeof(vSpawn); i++)
{
DestroyVehicle(eventvehicle[i]);
eventvehicle[i] = CreateVehicle(510, vSpawn[i][0], vSpawn[i][1], vSpawn[i][2], vSpawn[i][3], 233, 233, 120, 1);
eventvehicles = true;
}case 1: for(new i; i<sizeof(vSpawn); i++)
{
DestroyVehicle(eventvehicle[i]);
eventvehicles = false;
}}
ECFGMENU(playerid);}
-
-
Irgendwie fangen auf einmal an auf dem Server bestimmte (wohlgemerkt: selbst eingefügte Teile im Skript) Maps einfach unsichtbar zu werden. So wird z.B. nur noch 15 % von dem eigentlichen Bank Interior angezeigt. Dieses Problem kam erst auf, als ich ein neues Jail ins Skript gefügt habe.
Ich denke also mal dass es an zu vielen(?) Objekten liegt. Ich benutze den Incognito Streamer (v. 2.8.2 - aktuellster laut Github). Was kann ich noch probieren? Andere Streamer ausprobieren? -
Hallo, ich habe die Möglichkeit die Nametags an und auszuschalten, doch komischerweise funktioniert das nur für den Spieler der die Einstellung vornimmt und nicht für alle, obwohl ich eine Schleife verwende..
Die Nachricht in der Schleife erhält jeder..
if(dialogid == D_EVENTNAMETAG && response == 1)
{switch(listitem)
{
case 0: for(new i=0; i < MAX_PLAYERS; i++)
{
if(InEvent[playerid] == true)
{
ShowPlayerNameTagForPlayer(playerid,i,1);
SendClientMessage(i, -1, "Nametag shown");
eventnametags = true;
}
}case 1: for(new i=0; i < MAX_PLAYERS; i++)
{
if(InEvent[playerid] == true)
{
ShowPlayerNameTagForPlayer(playerid,i,0);
SendClientMessage(i, -1, "Nametag hidden");
eventnametags = false;
}
}}
ECFGMENU(playerid);}
-
-
Nein, das habe ich bereits versucht und es hilft nicht bzw. sorgt dafür das von niemandem der Nametag versteckt wird,