Hab einfach nach "samp getzone" gesucht.
[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
-
-
Abend,
if(strval(inputtext)>=6 && strval(inputtext) <=12)
Will abfragen das halt mindestens 6 Buchstaben benutzt wurden und max 12 Buchstaben (so richtig)
will jetzt das man auch mindesten 3 Zahlen da drin hat
Wie mache ich das? -
if(strlen(inputtext)>=6 && strlen(inputtext) <=12 && strval(inputtext) > 99)
Meinst du so? -
Ich will ja abfragen mindestens 6 und maximal 12 warum 99?
und 3 Zahlen minimum, aber wie frage ich das? -
Ich verstehe nicht wirklich was du genau haben willst.
Gib uns mal ein Beispiel, wie denn eine richtige Eingabe aussehen soll. -
und 3 Zahlen minimum, aber wie frage ich das?
strlen gibt dir die String-Länge.
Und in der Abfrage steht len >= 6 && len <= 12 ...was bedeutet...die länge muss mindestens 6 sein und kleiner gleich 12.
Und LeonMrBonnie meinte mit strval dass es sich um einen Zahlenwert handelt, das macht ja aber keinen Sinn, weil die Länge ja mind 6 sein muss xD
Also die richtige Abfrage ist das hier:
-
Achso, darauf habe ich nicht geachtet. Großes Danke!
Will das man sein Geburtsdatum angibt, aber wie frage ich ab00.00.0000
vor 1. Punkt maximal 31... -
Dann verwende doch das hier: https://forum.sa-mp.com/showthread.php?p=3828809
-
Code
Alles anzeigenstock bool:IsValidDate(dStr[]) { //By LORDZY!!! new monthDays[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, temp_YMD[3], temp_Pos = 0, temp_ePos = 0, temp_Index = 0 ; //Thought about implementing SSCANF_QUIET, but it requires spaces to work "currently". for(temp_Index = strlen(dStr) - 1; temp_Index != 0; temp_Index--) { if(!(dStr[temp_Index] >= 48 && dStr[temp_Index] <= 57)) dStr[temp_Index] = ' '; } if(sscanf(dStr, "iii", temp_YMD[0], temp_YMD[1], temp_YMD[2])) return false; temp_ePos = temp_Pos = -1; for(temp_Index = 0; temp_Index < 3; temp_Index++) { if(temp_YMD[temp_Index] > 1750) { if((temp_YMD[temp_Index] % 400) == 0 || ((temp_YMD[temp_Index] % 100) != 0 && (temp_YMD[temp_Index] % 4) == 0)) monthDays[1] = 29; } else if(temp_YMD[temp_Index] > 12) temp_Pos = temp_Index; else if(temp_ePos == -1) temp_ePos = temp_Index; else temp_Pos = temp_Index; } if(temp_ePos == -1 || temp_Pos == -1) return false; if(temp_YMD[temp_ePos] < 1 || temp_YMD[temp_ePos] > 12) return false; if(temp_YMD[temp_Pos] < 1 || temp_YMD[temp_Pos] > monthDays[temp_YMD[temp_ePos] - 1]) return false; return true; }
Habe mal hier so eins genommen was sccanf supportet, wie frage ich das ab mit if?
Soll ich das so speichern: GeburtsTag, Geburtsmonat, Geburtsjahr ? -
if(I!sValidDate(inputtext)) return SendClientMessage(playerid, -1, "Dies ist kein gültiges Datum");
-
Code
Alles anzeigenstock bool:IsValidDate(dStr[]) { //By LORDZY!!! new monthDays[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, temp_YMD[3], temp_Pos = 0, temp_ePos = 0, temp_Index = 0 ; //Thought about implementing SSCANF_QUIET, but it requires spaces to work "currently". for(temp_Index = strlen(dStr) - 1; temp_Index != 0; temp_Index--) { if(!(dStr[temp_Index] >= 48 && dStr[temp_Index] <= 57)) dStr[temp_Index] = ' '; } if(sscanf(dStr, "iii", temp_YMD[0], temp_YMD[1], temp_YMD[2])) return false; temp_ePos = temp_Pos = -1; for(temp_Index = 0; temp_Index < 3; temp_Index++) { if(temp_YMD[temp_Index] > 1750) { if((temp_YMD[temp_Index] % 400) == 0 || ((temp_YMD[temp_Index] % 100) != 0 && (temp_YMD[temp_Index] % 4) == 0)) monthDays[1] = 29; } else if(temp_YMD[temp_Index] > 12) temp_Pos = temp_Index; else if(temp_ePos == -1) temp_ePos = temp_Index; else temp_Pos = temp_Index; } if(temp_ePos == -1 || temp_Pos == -1) return false; if(temp_YMD[temp_ePos] < 1 || temp_YMD[temp_ePos] > 12) return false; if(temp_YMD[temp_Pos] < 1 || temp_YMD[temp_Pos] > monthDays[temp_YMD[temp_ePos] - 1]) return false; return true; }
Das Ding ist jetzt, ich kann angeben 01.01.2001 es geht ich kann auch 01_01_2001 angeben oder 01 01 2001. Ich will aber das er guckt ob nur . benutzt wurde und kein anderes Zeichen.
Meine Frage besteht immer noch wie ich das Speiche? da ich ja Punkte habe als float oder wie? -
Ich will aber das er guckt ob nur . benutzt wurde und kein anderes Zeichen.
//Thought about implementing SSCANF_QUIET, but it requires spaces to work "currently".
for(temp_Index = strlen(dStr) - 1; temp_Index != 0; temp_Index--) {
if(!(dStr[temp_Index] >= 48 && dStr[temp_Index] <= 57))
dStr[temp_Index] = ' ';
}
if(sscanf(dStr, "iii", temp_YMD[0], temp_YMD[1], temp_YMD[2]))
return false;zu:
if(sscanf(dStr, "p<.>iii", temp_YMD[0], temp_YMD[1], temp_YMD[2]))
return false;
(Ja, die Zeilen vor sscanf sollen weg.)Meine Frage besteht immer noch wie ich das Speiche? da ich ja Punkte habe als float oder wie?
Als string.
Im enum:
e_Birthday[11],
Und dann:
format(PlayerInfo[playerid][e_Birthday], 11, inputtext); -
Nabend,
ich habe soeben ein lustiges Problem festgestellt ... in meiner MySQL Log steht folgendes:
Code
Alles anzeigen[20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2053) [20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2054) [20:09:22] [ERROR] cache_get_value_name: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2055) [20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2056) [20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2057) [20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2058) [20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2059) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2060) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2061) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2062) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2063) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2064) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2065) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2066) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2067) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2068) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2069) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2070) [20:09:22] [ERROR] cache_get_value_name_int: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2071) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2072) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2073) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2074) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2075) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2076) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2077) [20:09:22] [ERROR] cache_get_value_name_float: invalid row index '2' (number of rows: '1') (...selfmade.pwn:2078)
Die zeilen dazu:Code
Alles anzeigenfor(new i = 0; i < rows; i++){ new id = i+1; Zeile: 2053 -> cache_get_value_name_int(i, "id", bInfo[id][biz_id]); cache_get_value_name_int(i, "biz_typ", bInfo[id][biz_typ]); cache_get_value_name(i, "biz_name", bInfo[id][biz_name], 1024); cache_get_value_name_int(i, "biz_owner", bInfo[id][biz_owner]); cache_get_value_name_int(i, "biz_sowner", bInfo[id][biz_sowner]); cache_get_value_name_int(i, "biz_level", bInfo[id][biz_level]); cache_get_value_name_int(i, "int_id", bInfo[id][int_id]); cache_get_value_name_float(i, "bizkosten", bInfo[id][biz_kosten]); cache_get_value_name_float(i, "bizkasse", bInfo[id][biz_kasse]); cache_get_value_name_float(i, "biz_x", bInfo[id][biz_x]); cache_get_value_name_float(i, "biz_y", bInfo[id][biz_y]); cache_get_value_name_float(i, "biz_z", bInfo[id][biz_z]); cache_get_value_name_float(i, "int_x", bInfo[id][int_x]); cache_get_value_name_float(i, "int_y", bInfo[id][int_y]); cache_get_value_name_float(i, "int_z", bInfo[id][int_z]); cache_get_value_name_float(i, "i_x", bInfo[id][i_x]); cache_get_value_name_float(i, "i_y", bInfo[id][i_y]); cache_get_value_name_float(i, "i_z", bInfo[id][i_z]); cache_get_value_name_int(i, "actor_skin", bInfo[id][actor_skin]); cache_get_value_name_float(i, "actor_x", bInfo[id][actor_x]); cache_get_value_name_float(i, "actor_y", bInfo[id][actor_y]); cache_get_value_name_float(i, "actor_z", bInfo[id][actor_z]); cache_get_value_name_float(i, "actor_r", bInfo[id][actor_r]); cache_get_value_name_float(i, "liefer_x", bInfo[id][liefer_x]); cache_get_value_name_float(i, "liefer_y", bInfo[id][liefer_y]); Zeile: cache_get_value_name_float(i, "liefer_z", bInfo[id][liefer_z]); }
Rows hat den Wert 21 ... Sprich 0 kann die variable rows nicht sein ...
MfG
XonarZ -
-
Die zeilen dazu:
Was für einen Sinn hat denn new id = i+1; ?
Das ist Blödsinn, nutze anstatt id nur i.
bekomme immer nur ID 1 bei getFreeGroupID
Dann ist diese Wohl auch immer frei.
Wie belegst du denn die Gruppen?
-
-
damit
Ja...und wann wo und wie wird das aufgerufen..und wie rufst du die andere Funktion auf...
Der ausschnitt bringt mir allein ja nix
-
Was für einen Sinn hat denn new id = i+1; ?
Das ist Blödsinn, nutze anstatt id nur i
Ganz einfach, die Biz geschichten werden aus der Datenbank ausgelesen und die Spalte "id" soll auch gleichzeitig die bizid sein ... Wenn ich nur i benutze funktioniert das ganze System irgendwie nicht so wie ich das will...
//EDIT habs dennoch mal getan, war ebenfalls nicht die Lösung.
MfG
XonarZ -
>https://pastebin.com/4P2zES9a
Und geladen:
forward OnGroupsLoad();
public OnGroupsLoad()
{
printf("OnGroupsLoad wurde aufgerufeen");
new num_rows;
cache_get_row_count(num_rows);
if(!num_rows)return 1;
for(new i; i<num_rows; i++) // gscore
{
new id=getFreeGroupID();
cache_get_value_name_int(i, "groupid", Group[id][groupid]);
cache_get_value_name(i, "groupname", Group[id][groupname],MAX_PLAYER_NAME); /
cache_get_value_name(i, "groupowner", Group[id][groupowner],MAX_PLAYER_NAME);
cache_get_value_name_int(i, "GroupWins", Group[id][GroupWins]);
cache_get_value_name_int(i, "GroupLosts", Group[id][GroupLosts]);}
return 1;
} -
//EDIT habs dennoch mal getan, war ebenfalls nicht die Lösung.
Was kam denn dann als Fehlermeldung..die selbe kann es ja nicht gewesen sein...da ja i < rows ist.
Und geladen:
Da beim Laden hast du vergessen es zu setzen.
Da fehlt das Group[id][groupid] = i; //oder was auch immer du für einen Wert da haben magst