Warum sollte er das tun? Seine Funktion geht doch, da er ja bereits gesagt hat, dass es im Print korrekt angezeigt wird. ![]()
[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
-
-
GetAlter(strval(Date[0]),strval(Date[1]),strval(Date[2])
Was muss ich hier ändern?
Habe ich in dem Stock die Möglichkeit zu sagen, das er nicht alter das geburtsdatu nicht vor 1930 und nach 2015 setzen kann?
Kann ich es so machen, das egal ob man sich 2019 oder 2020 registriert der Charakter immer nur manimal 14 Jahre alt sein kann?Edit: Ich hab den Codeschnipsel getestet, jetzt steht bei Alteri der DB 101 wenn ich 23 Jahre bin.
-
Hey,
Ich habe mal eine frage,
Ich wollte gerade was schreiben das man ingame auch die Fraktionen Bearbeiten kann heißt Spawn Fraktionskasse usw wie würdet ihr das hand haben mit den Fraktions Spawn?
-> Eher Per Dialog wo man die Koordinaten eingeben muss.
-> Eher per Command.Ich weiß nicht wie ich das am besten machen soll mit den Fraktions Spawn der rest ist mir schon verständlich genug

-
Alles anzeigen
Hey,
Ich habe mal eine frage,
Ich wollte gerade was schreiben das man ingame auch die Fraktionen Bearbeiten kann heißt Spawn Fraktionskasse usw wie würdet ihr das hand haben mit den Fraktions Spawn?
-> Eher Per Dialog wo man die Koordinaten eingeben muss.
-> Eher per Command.Ich weiß nicht wie ich das am besten machen soll mit den Fraktions Spawn der rest ist mir schon verständlich genug

Einen Befehl.
Statt dort Koordinaten eingeben zu müssen, sollte einfach der Spawn zu der Position des Spielers gesetzt werden, ist viel einfacher. -
Ich habe 2 Enums mit Alter
im ersten steht player_Alter und im 2. register_Alter.
Kan s sein, das sich diese beiden überschneiden?
-
Ich habe 2 Enums mit Alter
im ersten steht player_Alter und im 2. register_Alter.
Kan s sein, das sich diese beiden überschneiden?
Werde diese in die selbe DB eingespeichert?
-
Soweit ich weiß nicht.
Kannst du mir bitte kurz per Teamspeak helfen?
MfG
-
Soweit ich weiß nicht.
Kannst du mir bitte kurz per Teamspeak helfen?MfG
Schick mir die Daten mal per PN. Schaue dann mal drüber.
-
C
Alles anzeigencase DIALOG_FRAKTION_LSPD_WERTO: { new string[248], menge = strval(inputtext); if(response == 0)return 1; else { if(!strval(inputtext)) { format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des 'L.S.P.D' steht auf %d.\nSetze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTO, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück"); return 1; } if(!IsNumeric(inputtext)) { format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des 'L.S.P.D' steht auf %d.\nSetze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTO, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück"); return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Gebe nur Zahlen ein!"); } if(menge < 0 || menge > 1) { format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des 'L.S.P.D' steht auf %d.\nSetze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTO, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück"); return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Gib bitte nur ein Gehalt von 0 - 1 an!"); } Frak[1][frakKasseOn] = menge; format(string,sizeof(string),"{FFFFFF}Du hast die Fraktionskasse des {33AA33}'L.S.P.D' {FFFFFF}auf {33AA33}%d {FFFFFF}gesetzt.", menge); SendClientMessage(playerid, COLOR_WHITE, string); SaveAllFraktion(); return 1; } }Hey,
Kurze frage wen ich 0 eingebe kommt der Dialog wieder?
Also scheinbar mag er die 0 nicht ist doch alles richtig oder sehe ich das Falsch :D? -
Kann es sein, dass in meiner Tablle etwas falsch ist und deswegen Alter 101 steht?
alter.PNG
Edit: Muss ich beim Abspeichern des Alters mit GetAlter arbeiten bzw. es beim Abspeichern anders berechnen?
@Kaliber hast du bitte vlt ne Lösung?Edit: Problem gelöst. Danke an alle die einen Lösungsansatz gebracht haben!
-
-
Abend,
Ich habe bei meinem Blitzer System eine frage.
Unswa wenn ich auf den Blitzer zufahre dann Blitzt er nicht aber sobald ich hinter dem Blitzer bin Blitzt er.
Ich habe mir das Ganze mal Printen lassen weiß aber nicht was ich dagegen machen sollCodeif(IsPlayerFacingPos(playerid, 180.0, Blitzi[i][blitz_x], Blitzi[i][blitz_y])) { if(Blitztime[playerid] == 0 || Blitztime[playerid] > gettime()) { Blitz_Player(playerid); Blitztime[playerid] = gettime() + 60*15; } }Code
Alles anzeigenIsPlayerFacingPos(playerid, Float: de, Float: X, Float: Y) { new Float: pX, Float: pY, Float: pZ ; if(GetPlayerPos(playerid, pX, pY, pZ)) { pX = -atan2(pX - X, pY - Y); if(pX < 0.0) { pX += 360.0; } GetPlayerFacingAngle(playerid, pY); printf("pX = %f pY = %f", pX, pY); pX -= pY; if(pX < -180) { pX += 360.0; } else if(pX > 180.0) { pX -= 360.0; } printf("%f < %f < %f", -de, pX, de); return (-de < pX < de); } return false; }Code
Alles anzeigen//Bin Vor dem Blitzer ( kein Blitzer ) [22:33:16] pX = 266.194030 pY = 106.402290 [22:33:16] -50.000000 < 159.791748 < 50.000000 //Bin am Blitzer vor ( er Blitzt ) [22:33:45] pX = 137.451522 pY = 103.471153 [22:33:45] -50.000000 < 33.980369 < 50.000000 //Bin Vor dem Blitzer ( kein Blitzer ) [22:35:00] pX = 285.677307 pY = 93.044090 [22:35:00] -50.000000 < -167.366790 < 50.000000 //Bin am Blitzer vor ( er Blitzt ) [22:35:30] pX = 81.283630 pY = 93.853813 [22:35:30] -50.000000 < -12.570182 < 50.000000 -
Hi!
Wie kann ich machen,dass von dem Namen die Unterstriche im Chat entfernt werden z.B(Max_Mustermann -> Max Mustermann)?
MfG
Edit:
Momentan versuche ich es soCstock strreplace(string[], find, replace) { for(new i=0; string[i]; i++) { if(string[i] == find) { string[i] = replace; } } }Cpublic OnPlayerText(playerid, text[]) { new message[128],rpname[255]; rpname = SpielerDaten[playerid][player_RPName]; strreplace(rpname, '_', ' '); format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", rpname, text); return SendClientMessageToAll(WEISS, message); }
Das funktioniert jedoch nicht.Was muss ich da machen damit das _ im RP Namen mit nem Leerzeichen ersetzt wird?
-
Code
Alles anzeigenstock RemoveUnderscore(text[]) { new len, string[]; format(string,sizeof(string),text); len = strlen(string); for(new i=0;i<len;i++) { if(string[i] == '_') string[i] = ' '; } return string; } public OnPlayerText(playerid, text[]) { new message[128],rpname[255]; rpname = RemoveUnderscore(SpielerDaten[playerid][player_RPName]); format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", rpname, text); return SendClientMessageToAll(WEISS, message); }Nicht getestet, sollte aber funktionieren.
-
Danke, es funktioniert einwandfrei
Edit:
Code
Alles anzeigenpublic OnPlayerText(playerid, text[]) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new message[128],rpname[255],string[128]; rpname = RemoveUnderscore(SpielerDaten[playerid][player_RPName]); format(message, sizeof(message), "%s sagt: {FFFFFF}%s", rpname, text); new chat_color; for(new i=0; i<MAX_PLAYERS; i++) { if(!SpielerDaten[i][player_Eingeloggt]) continue; if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue; new Float:distance = GetPlayerDistanceFromPoint(i, x, y, z); if(distance < CHAT_RADIUS / CHAT_FADES) { chat_color = COLOR_CHAT; } else if(distance < CHAT_RADIUS / CHAT_FADES * 2) { chat_color = COLOR_FADE1; } else if(distance < CHAT_RADIUS / CHAT_FADES * 3) { chat_color = COLOR_FADE2; } else if(distance < CHAT_RADIUS / CHAT_FADES * 4) { chat_color = COLOR_FADE3; } else if(distance <= CHAT_RADIUS / CHAT_FADES * 5) { chat_color = COLOR_FADE4; } SendClientMessage(i, chat_color, string); } return 0; }
Ich ba jetzt gemacht das sich die Farbe ändert je weiter die anderen Spieler weg sind, jedoch wird die Nachricht nicht angezeigt. Was ist da falsch?
@LeonMrBonnieEdit: Code umgebessert
Muss es if(!SpielerDaten[i][player_Eingeloggt](i)) continue; sein oder ohne (i)? -
Code
Alles anzeigenpublic OnPlayerText(playerid, text[]) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new message[128],rpname[255],string[128]; rpname = RemoveUnderscore(SpielerDaten[playerid][player_RPName]); format(message, sizeof(message), "%s sagt: {FFFFFF}%s", rpname, text); new chat_color; for(new i=0; i<GetPlayerPoolSize(); i++) { if(!SpielerDaten[i][player_Eingeloggt]) continue; if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue; new Float:distance = GetPlayerDistanceFromPoint(i, x, y, z); if(distance < CHAT_RADIUS / CHAT_FADES) { chat_color = COLOR_CHAT; } else if(distance < CHAT_RADIUS / CHAT_FADES * 2) { chat_color = COLOR_FADE1; } else if(distance < CHAT_RADIUS / CHAT_FADES * 3) { chat_color = COLOR_FADE2; } else if(distance < CHAT_RADIUS / CHAT_FADES * 4) { chat_color = COLOR_FADE3; } else if(distance <= CHAT_RADIUS / CHAT_FADES * 5) { chat_color = COLOR_FADE4; } SendClientMessage(i, chat_color, string); } return 0; }Verwende bei Loops bei denen du durch alle Spieler loopst entweder GetPlayerPoolSize (Das ist die Anzahl der verbundenen Spieler) oder nutze das foreach Include.
Wie hast du denn CHAT_RADIUS und CHAT_FADES definiert?Muss es if(!SpielerDaten[player_Eingeloggt](i)) continue; sein oder ohne (i)?
Das (i) in Klammern macht dort keinen Sinn, da du ja auf deine Spielerdaten zugreifen willst die in einem enum gespeichert sind, und nicht eine Funktion aufrufst. Also muss es if(!SpielerDaten[i][player_Eingeloggt]) continue; sein.
-
1. Wieso funktioniert du Funktion, du gibst keine String-Größe an?
2. Es ist klar definiert, dass nur ein Unterstrich im Namen vorkommen darf, oder?
Dann könntest du die Funktion einfach so schreiben:
Cstock RemoveUnderscore(const text[MAX_PLAYER_NAME+1]) { new i = strfind(text,"_"); if(i == -1) return text; new string[MAX_PLAYER_NAME+1]; strcat(string,text),string[i] = ' '; return string; }
Mit der Funktion ist auch sichergestellt, dass du nicht zu große Arrays verwendest oder zu kleine
Und bei deinem Callback kommst du durcheinander (der Fehler liegt bei den String-Variablen), weil du alles darein packst.
Aber das ist doch eine eigene Funktion, die du an anderer Stelle eventuell wieder verwenden kannst, lager sie doch einfach aus.
Schreib es so:
C
Alles anzeigenpublic OnPlayerText(playerid, text[]) { new string[128]; format(string, sizeof(string), "%s sagt: {FFFFFF}%s", RemoveUnderscore(SpielerDaten[playerid][player_RPName]), text); SendRangeColorMessage(playerid, string); return 0; } stock SendRangeColorMessage(playerid,const string[]) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); for(new i=GetPlayerPoolSize(),chat_color,Float:distance; i!=-1; i--) { if(!SpielerDaten[i][player_Eingeloggt] || !IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z)) continue; distance = GetPlayerDistanceFromPoint(i, x, y, z); if(distance < CHAT_RADIUS / CHAT_FADES) { chat_color = COLOR_CHAT; } else if(distance < CHAT_RADIUS / CHAT_FADES * 2) { chat_color = COLOR_FADE1; } else if(distance < CHAT_RADIUS / CHAT_FADES * 3) { chat_color = COLOR_FADE2; } else if(distance < CHAT_RADIUS / CHAT_FADES * 4) { chat_color = COLOR_FADE3; } else if(distance <= CHAT_RADIUS / CHAT_FADES * 5) { chat_color = COLOR_FADE4; } SendClientMessage(i, chat_color, string); } return 1; }PS: Falls du die Funktion oben verwendest und einen Fehler erhälst wegen der Array Size, im Enum muss die Größe von player_RPName exakt MAX_PLAYER_NAME+1 sein.
-
Alles anzeigen
Abend,
Ich habe bei meinem Blitzer System eine frage.
Unswa wenn ich auf den Blitzer zufahre dann Blitzt er nicht aber sobald ich hinter dem Blitzer bin Blitzt er.
Ich habe mir das Ganze mal Printen lassen weiß aber nicht was ich dagegen machen sollCodeif(IsPlayerFacingPos(playerid, 180.0, Blitzi[i][blitz_x], Blitzi[i][blitz_y])) { if(Blitztime[playerid] == 0 || Blitztime[playerid] > gettime()) { Blitz_Player(playerid); Blitztime[playerid] = gettime() + 60*15; } }Code
Alles anzeigenIsPlayerFacingPos(playerid, Float: de, Float: X, Float: Y) { new Float: pX, Float: pY, Float: pZ ; if(GetPlayerPos(playerid, pX, pY, pZ)) { pX = -atan2(pX - X, pY - Y); if(pX < 0.0) { pX += 360.0; } GetPlayerFacingAngle(playerid, pY); printf("pX = %f pY = %f", pX, pY); pX -= pY; if(pX < -180) { pX += 360.0; } else if(pX > 180.0) { pX -= 360.0; } printf("%f < %f < %f", -de, pX, de); return (-de < pX < de); } return false; }Code
Alles anzeigen//Bin Vor dem Blitzer ( kein Blitzer ) [22:33:16] pX = 266.194030 pY = 106.402290 [22:33:16] -50.000000 < 159.791748 < 50.000000 //Bin am Blitzer vor ( er Blitzt ) [22:33:45] pX = 137.451522 pY = 103.471153 [22:33:45] -50.000000 < 33.980369 < 50.000000 //Bin Vor dem Blitzer ( kein Blitzer ) [22:35:00] pX = 285.677307 pY = 93.044090 [22:35:00] -50.000000 < -167.366790 < 50.000000 //Bin am Blitzer vor ( er Blitzt ) [22:35:30] pX = 81.283630 pY = 93.853813 [22:35:30] -50.000000 < -12.570182 < 50.000000Alles anzeigenAbend,
Ich habe bei meinem Blitzer System eine frage.
Unswa wenn ich auf den Blitzer zufahre dann Blitzt er nicht aber sobald ich hinter dem Blitzer bin Blitzt er.
Ich habe mir das Ganze mal Printen lassen weiß aber nicht was ich dagegen machen sollCodeif(IsPlayerFacingPos(playerid, 180.0, Blitzi[i][blitz_x], Blitzi[i][blitz_y])) { if(Blitztime[playerid] == 0 || Blitztime[playerid] > gettime()) { Blitz_Player(playerid); Blitztime[playerid] = gettime() + 60*15; } }Code
Alles anzeigenIsPlayerFacingPos(playerid, Float: de, Float: X, Float: Y) { new Float: pX, Float: pY, Float: pZ ; if(GetPlayerPos(playerid, pX, pY, pZ)) { pX = -atan2(pX - X, pY - Y); if(pX < 0.0) { pX += 360.0; } GetPlayerFacingAngle(playerid, pY); printf("pX = %f pY = %f", pX, pY); pX -= pY; if(pX < -180) { pX += 360.0; } else if(pX > 180.0) { pX -= 360.0; } printf("%f < %f < %f", -de, pX, de); return (-de < pX < de); } return false; }Code
Alles anzeigen//Bin Vor dem Blitzer ( kein Blitzer ) [22:33:16] pX = 266.194030 pY = 106.402290 [22:33:16] -50.000000 < 159.791748 < 50.000000 //Bin am Blitzer vor ( er Blitzt ) [22:33:45] pX = 137.451522 pY = 103.471153 [22:33:45] -50.000000 < 33.980369 < 50.000000 //Bin Vor dem Blitzer ( kein Blitzer ) [22:35:00] pX = 285.677307 pY = 93.044090 [22:35:00] -50.000000 < -167.366790 < 50.000000 //Bin am Blitzer vor ( er Blitzt ) [22:35:30] pX = 81.283630 pY = 93.853813 [22:35:30] -50.000000 < -12.570182 < 50.000000hat jemand einen Plan was ich Flasch mache ?
-
-
format(SpielerDaten[playerid][player_LastLoginZeit], 50, "%d:%d:%d",Time[0],Time[1],Time[2]);
Einfach:
format(SpielerDaten[playerid][player_LastLoginZeit], 50, "%02d:%02d:%02d",Time[0],Time[1],Time[2]);
hat jemand einen Plan was ich Flasch mache ?
Was heißt denn Bin am Blitzer vor?
Wieso stimmt das denn nicht?
Er blitzt doch nur auf einer Seite...wenn es die falsche Seite ist, dreh einfach den Winkel:
GetPlayerFacingAngle(playerid, pY);
pY = floatround(pY + 180.0) % 360; -
Ich hab folgendes Problem, wenn ich spawne lande ich am 0 Punkt und die Koordinaten werden nicht in die DB eingetragen, obwohl alles richtig zu sein scheint.
Code
Alles anzeigenpublic OnUserRegister(playerid) { SpielerDaten[playerid][player_ID] = cache_insert_id(); SpielerDaten[playerid][player_Eingeloggt] = true; SpielerDaten[playerid][player_Level] = 1; SpielerDaten[playerid][player_Spawn][0] = -2765.4102; SpielerDaten[playerid][player_Spawn][1] = 375.5445; SpielerDaten[playerid][player_Spawn][2] = 6.3359; SpielerDaten[playerid][player_Spawn][3] = 277.2229; printf("%f",SpielerDaten[playerid][player_Spawn][0]); SaveUserStats(playerid); new string[128]; format(string,sizeof(string),"{FFFFFF}Herzlich Willkommen auf Austrian Roleplay %s [%d]",SpielerDaten[playerid][player_Name],playerid); SendInfoMessage(playerid,string); SpawnPlayer(playerid); return 1; }Codepublic OnPlayerSpawn(playerid) { SetPlayerPos(playerid, SpielerDaten[playerid][player_Spawn][0], SpielerDaten[playerid][player_Spawn][1], SpielerDaten[playerid][player_Spawn][2]); SetPlayerFacingAngle(playerid, SpielerDaten[playerid][player_Spawn][3]); SetPlayerInterior(playerid, SpielerDaten[playerid][player_Interior]); SetPlayerVirtualWorld(playerid, SpielerDaten[playerid][player_World]); SetCameraBehindPlayer(playerid); SetPlayerSkin(playerid, SpielerDaten[playerid][player_Skin]); return 1; } -