[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 @malE
Habe wieder ein ähnliches Problem beim erstellen der Label. Ich drücke Numpad 4, die Nachricht im Code wird aufgerufen aber die Labels erstellen sich nicht..
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_ANALOG_LEFT))
{
if(!CheckAdminName(playerid)) return 0;
for(new i=0; i < 25; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
new name[MAX_PLAYER_NAME];
new str[32];
GetPlayerName(i, name, sizeof(name));
format(str, sizeof(str), "{%06x} %s",GetPlayerColor(i) >>> 8,name);
SendClientMessage(playerid,-1,"Versuche Label zu erstellen..");
DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
return 1;
}
}
else if (PRESSED(KEY_ANALOG_RIGHT))
{
for(new i=0; i < 25; i++)
{
DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
}
}
return 1;
} -
Sieht ja stark nach einem Copy-Paste Fehler aus
So wie es da steht setzt du der Playerid (dem der die Taste drückt) bei jedem Schleifendurchlauf das Label. -
Du darfst in den meisten Fällen kein return 1 in den Schleifen machen.
Versuchs mal, vielleicht lag es ja daran.Code
Alles anzeigenpublic OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if (PRESSED(KEY_ANALOG_LEFT)) { if(!CheckAdminName(playerid)) return 0; for(new i=0; i < 25; i++) { if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue; new name[MAX_PLAYER_NAME]; new str[32]; GetPlayerName(i, name, sizeof(name)); format(str, sizeof(str), "{%06x} %s",GetPlayerColor(i) >>> 8,name); SendClientMessage(playerid,-1,"Versuche Label zu erstellen.."); DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]); pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0); } return 1; } else if (PRESSED(KEY_ANALOG_RIGHT)) { for(new i=0; i < 25; i++) { DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]); } } return 1; }
-
Hmm, habe das so eingefügt und wir kommen schon der Sache ein bisschen näher. Mein Label wird nun erstellt aber nur an einem Spieler und nicht an alle.
Dabei habe ich doch die Schleife verwendet, oder habe ich irgendwas falsch gemacht ? -
Wie bereits gesagt.. Du willst doch immer dem Spieler mit der ID "i", welche bei jedem Schleifendurchlauf um 1 erhöht wird, ein Label setzen. Dann musst du auch "i" bei CreatePlayer3DTextLabel einsetzen anstatt "playerid".
-
Wie bereits gesagt.. Du willst doch immer dem Spieler mit der ID "i", welche bei jedem Schleifendurchlauf um 1 erhöht wird, ein Label setzen. Dann musst du auch "i" bei CreatePlayer3DTextLabel einsetzen anstatt "playerid".
pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
Das mache ich doch da bereits. Der TextLabel soll nicht für alle sichtbar sein, sondern nur für die Person die Numpad 4 drückt, deswegen bleibt es bei playerid und geht nicht zur Schleife.
Außerdem hilft das auch nicht wenn ich es zu i umändere, habe es bereits versucht.. -
Hi, wie kann man ein Help System machen z.B. so
Du gibst /Help [Zahl oder Begriff] ein und bekommst das Dialog mit dem Helptext
-
Ist das Normal?
Code[11:34:34] [Verbrauch] 0.00 Liter [11:34:36] [Verbrauch] 0.10 Liter [11:34:37] [Verbrauch] 1038174144.00 Liter [11:34:38] [Verbrauch] 1316455680.00 Liter [11:34:39] [Verbrauch] 1318907648.00 Liter [11:34:40] [Verbrauch] 1318926848.00 Liter [11:34:41] [Verbrauch] 1318926976.00 Liter [11:34:42] [Verbrauch] 1318926976.00 Liter [11:34:43] [Verbrauch] 1318926976.00 Liter
Codeif(GetPlayerSpeed(playerid) > 0 && GetPlayerSpeed(playerid) < 40)CarInfo[idx][car_Verbrauch] += 0.11; if(GetPlayerSpeed(playerid) >= 40 && GetPlayerSpeed(playerid) < 60)CarInfo[idx][car_Verbrauch] += 0.14; if(GetPlayerSpeed(playerid) >= 60 && GetPlayerSpeed(playerid) < 95)CarInfo[idx][car_Verbrauch] += 0.17; if(GetPlayerSpeed(playerid) >= 95 && GetPlayerSpeed(playerid) < 125)CarInfo[idx][car_Verbrauch] += 0.21; if(GetPlayerSpeed(playerid) >= 125 && GetPlayerSpeed(playerid) < 140)CarInfo[idx][car_Verbrauch] += 0.24; if(GetPlayerSpeed(playerid) >= 140 && GetPlayerSpeed(playerid) < 160)CarInfo[idx][car_Verbrauch] += 0.26; if(GetPlayerSpeed(playerid) >= 160 && GetPlayerSpeed(playerid) < 170)CarInfo[idx][car_Verbrauch] += 0.31; if(GetPlayerSpeed(playerid) >= 170 && GetPlayerSpeed(playerid) < 260)CarInfo[idx][car_Verbrauch] += 0.46; printf("[Verbrauch] %0.2f Liter", CarInfo[idx][car_Verbrauch]);
-
Nein, normal sehen die Zahlen nicht aus, vor allem nicht wenn das in einem Sekundenabstand ist.
Cif(GetPlayerSpeed(playerid) > 0 && GetPlayerSpeed(playerid) < 40)CarInfo[idx][car_Verbrauch] += 0.11; else if(GetPlayerSpeed(playerid) >= 40 && GetPlayerSpeed(playerid) < 60)CarInfo[idx][car_Verbrauch] += 0.14; else if(GetPlayerSpeed(playerid) >= 60 && GetPlayerSpeed(playerid) < 95)CarInfo[idx][car_Verbrauch] += 0.17; else if(GetPlayerSpeed(playerid) >= 95 && GetPlayerSpeed(playerid) < 125)CarInfo[idx][car_Verbrauch] += 0.21; else if(GetPlayerSpeed(playerid) >= 125 && GetPlayerSpeed(playerid) < 140)CarInfo[idx][car_Verbrauch] += 0.24; else if(GetPlayerSpeed(playerid) >= 140 && GetPlayerSpeed(playerid) < 160)CarInfo[idx][car_Verbrauch] += 0.26; else if(GetPlayerSpeed(playerid) >= 160 && GetPlayerSpeed(playerid) < 170)CarInfo[idx][car_Verbrauch] += 0.31; else if(GetPlayerSpeed(playerid) >= 170 && GetPlayerSpeed(playerid) < 260)CarInfo[idx][car_Verbrauch] += 0.46;
So?
-
Es erscheinen mehr oder weniger immer noch die selben Werte.
Ich frag mich eigentlich auch, wie der Verbrach am Anfang bei 0.10 Litern ist, denn es beginnt eigentlich mit 0.11 Litern. -
Wie kann ich alle Spieler die auf dem Server connectet sind abfragen welche Waffen sie besitzen und in einer Nachricht ausgeben?
Wichtig ist, welche Waffe sie besitzen und nicht welche sie aktuell in der Hand halten.. -
Schau dir dazu mal die Funktion [wiki]GetPlayerWeaponData[/wiki] an, damit kann man das realisieren.
-
Danke
Wieso erhalte ich hier diesen Error?
stock CheckAdminName(playerid)
{
if(!strcmp(SpielerName(playerid), "[LnD]JustMe.77"))return 1;
return 0;
}SendAdminMessage(color, const strdoadm[]) {
for(new i=0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) == 1) if(!CheckAdminName(playerid)) SendClientMessage(i, color, strdoadm);
}
return 0;
}error 017: undefined symbol "playerid"
Bisher hatte ich das noch nicht gehabt wenn ich irgendwo meine Adminabfrage gemacht habe, wieso erscheint das jetzt?
-
zu
=> EDIT:
@malEBist du dir sicher, das die Variable car_Verbrauch auch auf 0 steht? Das ganze kommt mir bisschen komisch rüber, denn anstatt 0.11 wird 0.10 eingetragen und danach ist es sofort eine große Zahl. Du setzt den Verbrauch aber nur da hoch, aber nirgendswo anders, oder?
-
Die Variable setze ich nur dort hoch und beim Laden der Spielerfahrzeuge setze ich die Variable auf Null.
-
Kann mir jemand helfen? Warscheinlich sehe ich mal wieder den Wald vor lauter Bäumen nicht..
"Number of arguments not match definition" oder so.. zeile 4
new pREGdone[128];
new pNameReg[128];
GetPlayerName(playerid,pNameReg,sizeof(pNameReg));
format(pREGdone,sizeof(pREGdone),"Name: %s | Age: %d | Gender: %s | Religon: notavailible | Origin Race: %s",GetPlayerName(playerid),pInfo[playerid][pAge],gender,pInfo[playerid][pOrigin]);
SendClientMessage(playerid,COLOR_WHITE,pREGdone); //dafuq -
Das Problem liegt bei GetPlayerName();
Schau dir da nochmal die nötigen Parameter an: https://wiki.sa-mp.com/wiki/GetPlayerName
Der Rest ist in Ordnung. Wenn du GetPlayerName korrigierst, gibt es keinen Fehler mehr. -
Danke für die schnelle Antwort !!
Ich musste also nur hinten statt dem ganzen "GetPlayerName.." nur den zugewiesenen namen schreiben..
es geht jetzt
Noch eine andere Frage.. bei meinem login Dialogen erscheint unten die links und rechts auswahl box für die skinauswahl, dabei geht mein script garnicht zu "onplayerrequstclass"
Man kann sich zwar einloggen aber auch da einfach auf spawn drücken und dann schmier tes halt ab "stay within the world .."
Wie kann ich das Auswahlfenster unterbinden?! -
Noch eine andere Frage.. bei meinem login Dialogen erscheint unten die links und rechts auswahl box für die skinauswahl, dabei geht mein script garnicht zu "onplayerrequstclass"
Man kann sich zwar einloggen aber auch da einfach auf spawn drücken und dann schmier tes halt ab "stay within the world .."
Wie kann ich das Auswahlfenster unterbinden?!Die Frage wurde hier im Forum schon häufig behandelt.
Schau mal in diesem Thread: [HILFE]Wie kann ich den Spawn button wegmachen ?