Ist bI[i][bX] bzw. bX eine Float-Var?
[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
-
-
Danke hab es falsch definiert.
Wie liest man einen Namen aus der Datenbank aus wenn der Spieler gerade nicht Online ist?
-
Wie kann ich eine if Abfrage bei OnDialogResponse einbauen ohne dass es zu Fehlern kommt?
Beispiel: case 0: if(isAdmin(playerid,5)) return SendClientMessage...
GivePlayerWeapon(playerid,WEAPON_MP5);Habe etwas nach diesem Schema, beim Übersetzen bekomme ich aber einen Batzen an Fehlern..
-
Schau dir die Wiki an:
http://wiki.sa-mp.com/wiki/OnDialogResponse -
Habe das Problem, dass dem Compiler die Line zu lang ist.
CodesavePlayer(playerid) { if(sInfo[playerid][eingeloggt] ==0)return 1; new query[128]; format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',rang='%i',banned='%i',bangrund='%s',wanteds='%i',knast='%i',knastzeit='%i',skin='%i',bank='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][banned],sInfo[playerid][bangrund],GetPlayerWantedLevel(playerid),sInfo[playerid][knast],sInfo[playerid][knastzeit],GetPlayerSkin(playerid),sInfo[playerid][bank],sInfo[playerid][id]); mysql_function_query(dbhandle,query,false,"",""); return 1; }
Selbst im Quellcode sieht es schrecklich aus. Der Error lautet: error 075: input line too long (after substitutions)
Was genau muss ich hier machen, um die Line zu trennen damit der Compiler nicht meckert? -
Nach jedem Komma kannst du zb(Kommata die nicht innerhalb der "" sind) eine Zeile runter gehen.
So zum Beispiel. -
Ich verstehe das noch nicht.
-
Ich verstehe das noch nicht.
Mit \ kannst du eine Zeile unterbrechen und dadrunter weiterführen.
Beispiel:
format(query,sizeof(query),"UPDATE user SET level='%i',\
money='%i',\
alevel='%i',\
[....]", [...]); -
Habe einfach nach einem Komma den Rest in die nächste Zeile verschoben, viel einfacher. Trotzdem danke.
-
Beitrag von Marschl ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Guten Abend,
ich möchte gern einen TTT Server für SA:MP schreiben.
Ich möchte das wenn es 4 Spieler sind 2 Traitor und 2 Innocent sin. Spielen nur 2 soll einer Inno sein und der andere Traitor. Spielen 6 soll es 3 Traitor geben und 3 Innos usw. so das alles gleich aufgeteilt ist.
Wie kann ich nun den Spielern die verschiedenen (random) Werte zuweisen. Wir nehmen mal an " IsPlayerTraitor = 1 " wenn er Traitor ist und "IsPlayerTraitor = 0" wenn er keiner ist.
@Jeffry
Vielen Dank im Voraus! -
new variable;
for(new i;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)) //Abfrage ob Spieler online ist, hier könnte man auch per Variable oder so überprüfen ob er gespawnt ist und im Spiel ist
{
if(variable==0)
{
variable = 1;
IsPlayerTraitor{i]=1;
}
else
{
variable=0;
IsPlayerTraitor[i]=0;
}
}
}So werden im Wechsel die Spieler in die Teams beim Rundenbeginn gesetzt. Traitor, Innocent, Traitor, Innocent etc.
-
new variable;
for(new i;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)) //Abfrage ob Spieler online ist, hier könnte man auch per Variable oder so überprüfen ob er gespawnt ist und im Spiel ist
{
if(variable==0)
{
variable = 1;
IsPlayerTraitor{i]=1;
}
else
{
variable=0;
IsPlayerTraitor[i]=0;
}
}
}So werden im Wechsel die Spieler in die Teams beim Rundenbeginn gesetzt. Traitor, Innocent, Traitor, Innocent etc.
Eher eine Schlechte methode. Jede Runde werden die gleichen Spieler Traitor da es weder Random noch sonst eine Methode gibt. Jeder mit einer ungeraden Geraden Spieler ID wird Traitor, jeder mit einer Ungeraden Inno.
Na dann musst nicht mehr lange herausfinden
Zudem ist MAX_Players weniger Performant als GetPlayerPoolSize();Schlauer wäre zum Beispiel folgendes:
Code
Alles anzeigenfor(new i = 0; i < GetPlayerPoolSize(); i++) { if(IsPlayerConnected(i)) { new val = random(100); if(val > 75) //25% auf Traitor { IsTraitor[i] = 1; } else { IsTraitor[i] = 0; } } }
Wenn du das gerecht Aufteilen willst, musst du halt die Traitors zählen und die Schleife entweder solange ausführen bis genug Traitors gewählt wurden, oder die Chance nach jedem gewählten Traitor erhöhen.
-
Eher eine Schlechte methode. Jede Runde werden die gleichen Spieler Traitor da es weder Random noch sonst eine Methode gibt. Jeder mit einer ungeraden Geraden Spieler ID wird Traitor, jeder mit einer Ungeraden Inno.Na dann musst nicht mehr lange herausfinden
Zudem ist MAX_Players weniger Performant als GetPlayerPoolSize();Schlauer wäre zum Beispiel folgendes:
Code
Alles anzeigenfor(new i = 0; i < GetPlayerPoolSize(); i++) { if(IsPlayerConnected(i)) { new val = random(100); if(val > 75) //25% auf Traitor { IsTraitor[i] = 1; } else { IsTraitor[i] = 0; } } }
Wenn du das gerecht Aufteilen willst, musst du halt die Traitors zählen und die Schleife entweder solange ausführen bis genug Traitors gewählt wurden, oder die Chance nach jedem gewählten Traitor erhöhen.
Kleiner einwand:
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
(Wichtig ist das <=)GetPlayerPoolSize gibt die höchste Spieler ID zurück, wenn du < benutzt wird der letzte Spieler (der mit der höchsten ID) nie ausgewählt.
-
Kleiner einwand:for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
(Wichtig ist das <=)GetPlayerPoolSize gibt die höchste Spieler ID zurück, wenn du < benutzt wird der letzte Spieler (der mit der höchsten ID) nie ausgewählt.
Danke euch. Werde es heute mal testen.
-
Wie kann ich das MapAndreas Include nutzen?
Mich stoert bei der Funktion das Ampersand SymbolCstock TeleportPlayerToRandomPosition(playerid) { new Float:Z; //MapAndreas_FindZ_For2DCoord(GlobalZones[0][1], GlobalZones[0][3], &Float:Z); SetPlayerPos(playerid,frandom(GlobalZones[0][1]),frandom(GlobalZones[0][3]),Float:Z); }
Das ganze hier haut ja irgendwie nicht hin, warum nicht? Bitte um Rat
Weiterhin eine andere Frage: Was fuer einen Return Wert hat sscanf?
-
Warum bringt das hier Errors?
C
Alles anzeigen#define COLOR_GREY 0xAFAFAFAA #define COLOR_GREEN 0x33AA33AA #define COLOR_RED 0xAA3333AA #define COLOR_SAND 0xC2B280FF #define COLOR_DARKRED 0x660000AA #define COLOR_PINK 0xFF66FFAA #define COLOR_AQUA 0x00FFFFAA #define COLOR_BEIGE 0xFFF8DCAA #define COLOR_BLACK 0x000000AA #define COLOR_BLUELIGHTER 0x00BFFFAA #define COLOR_BLUELIGHT 0x1E90FFAA #define COLOR_BLUEMEDIUM 0x0000CDAA #define COLOR_BLUEDARK 0x00008BAA #define COLOR_PINKLIGHT 0xFF1493AA #define COLOR_PINKDARK 0xFF00FFAA #define COLOR_GREENLIGHT 0x00FF00AA #define COLOR_GREENDARK 0x006400AA #define COLOR_MAROON 0x800000AA #define COLOR_OKER 0x808000AA #define COLOR_ORANGEDARK 0xFF4500AA #define COLOR_ORANGELIGHT 0xFF8C00AA #define COLOR_PURPLE 0x800080AA #define COLOR_VIOLETDARK 0x9400D3AA #define COLOR_INDIGO 0xAB0082AA #define COLOR_SILVER 0xC0C0C0AA #define COLOR_TEAL 0x008080AA #define COLOR_WHITE 0xFFFFFFAA #define COLOR_GOLD 0xFFD700AA #define COLOR_BROWN 0x8B4513AA #define COLOR_BROWNLIGHT 0xA0522DAA #define COLOR_GRAY 0xA9A9A9AA #define COLOR_GRAYDARK 0x696969AA #define COLOR_YELLOW 0xFFFF00AA new Colors[]={ { COLOR_GREY }, { COLOR_GREEN }, { COLOR_RED }, { COLOR_WHITE }, { COLOR_SAND }, { COLOR_DARKRED }, { COLOR_PINK }, { COLOR_AQUA }, { COLOR_BEIGE }, { COLOR_BLACK }, { COLOR_BLUELIGHTER }, { COLOR_BLUELIGHT }, { COLOR_BLUEMEDIUM }, { COLOR_BLUEDARK }, { COLOR_PINKLIGHT }, { COLOR_PINKDARK }, { COLOR_GREENLIGHT}, { COLOR_GREENDARK }, { COLOR_MAROON }, { COLOR_OKER }, { COLOR_ORANGEDARK }, { COLOR_ORANGELIGHT }, { COLOR_PURPLE }, { COLOR_VIOLETDARK }, { COLOR_INDIGO }, { COLOR_SAND }, { COLOR_SILVER }, { COLOR_TEAL }, { COLOR_WHITE }, { COLOR_YELLOW }, { COLOR_GOLD }, { COLOR_BROWN }, { COLOR_BROWNLIGHT }, { COLOR_GRAY }, { COLOR_GRAYDARK } };
test.c(36) : error 008: must be a constant expression; assumed zero
test.c(70-71) : error 008: must be a constant expression; assumed zeroWird genutzt fuer
-
Wie kann ich das MapAndreas Include nutzen?
new Float:z;
MapAndreas_FindZ_For2DCoord(xCoord, yCoord, z);
SetPlayerPos(playerid, xCoord, yCoord, z);Weiterhin eine andere Frage: Was fuer einen Return Wert hat sscanf?
0 wenn alle Parameter korrekt eingegeben werden.
Du kannst es dir auch per print ausgeben lassen.
printf("sscanf: %d", sscanf(params, "d", id));Warum bringt das hier Errors?
Versuche
{ COLOR_GREY },
zu:
COLOR_GREY ,Für alle natürlich.
-
Vielen Dank schonmal, das mit dem return value war mir jetzt am wichtigsten.
Also das heisst wenn ich das richtig verstehe, kann ich strcmp bei OnPlayerCommandText auch fuer jeden Command durch sscanf ersetzen?C
Alles anzeigenif(strcmp(cmd, "/jetpack", true) == 0) { if(!IsPlayerAdmin(playerid)) { return 0; } SendClientMessage(playerid,COLOR_WHITE, "SERVER: Jetpack activated!"); SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USEJETPACK); return 1; } new player; if(sscanf(cmdtext[strlen("/jetpack")+1],"u", player) == 0) { if(!IsPlayerAdmin(player)) { return 0; } SendClientMessage(player,COLOR_WHITE, "SERVER: Jetpack activated!"); SetPlayerSpecialAction(player,SPECIAL_ACTION_USEJETPACK); return 1; }
-
Also das heisst wenn ich das richtig verstehe, kann ich strcmp bei OnPlayerCommandText auch fuer jeden Command durch sscanf ersetzen?
Nein, das geht nicht.
Sscanf teilt ja nur den eingegeben String, es prüft nicht, welchen Text du eingegeben hast.