Logg einfach alles was eingegeben wird und guck ob dir was auffällt ![]()
[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
-
-
Eventuell gibt er Befehle ein bevor das Passwortfeld erscheint

Falls das so ist, kannst du das easy beheben. -
Wenn wir schon beim Spekulieren sind, könnte es auch ne schnieke MySQL Injection sein, wenn das pw nicht escaped wird

-
Hi, in meinem FilterScript wird OnPlayerConnect nicht aufgerufen, deswegen habe ich versucht das Problem per Hook zu lösen aber es hilft nicht.
Weiß jemand woran das liegt oder habe ich beim hooken etwas falsch gemacht?public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,-1,"Test");#if defined SOB_OnPlayerConnect
return SOB_OnPlayerConnect(playerid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif#define OnPlayerConnect SOB_OnPlayerConnect
#if defined SOB_OnPlayerConnect
forward SOB_OnPlayerConnect(playerid);
#endif -
@Jeffry Wie genau soll ich die Funktion denn nutzen?
Ich möchte ja wissen, ob ein ATM in der Nähe ist, wenn ja, lasse ich ihn ein Dialog anzeigen.
Das ganze klappt aber nicht wirklich mit deinem Stock.
Oder bin ich gerade zu Doof, das zu erkennen?
Möchte es im Befehl zu aussehen haben:
if(ABFRAGE(playerid, NÄHE))
{
Zum Ausführen
}else SendClientMessage(playerid, -1, "Kein ATM in der Nähe"); -
new id = GetClosestATM(playerid, 20.0);
if(id != -1) //Nahe ATM id
else //Nicht in der Nähe -
Kann mir jemand helfen?
ocmd:spielerinfo(playerid,params[])
{
new str[145],str1[145], PName, query[128], acc[64],string[333];
new c_hour,c_minute,c_second,c_day,c_month,c_year;
gettime(c_hour, c_minute, c_second);
getdate(c_year, c_month, c_day);
if(sscanf(params, "s", PName)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
format(query, sizeof(query),"SELECT LastJoin AND Gebannt FROM `accounts` WHERE `Name`='%s'",PlayerInfo[playerid][PName]);
mysql_query(query);
format(str1, sizeof(str1), "Der Spieler %s war zuletzt am Spieler: %d:%d:%d",PName,PlayerInfo[playerid][pLastjoin]);
SendClientMessage(playerid, 0xFFFFFFFF, str1);
if(PlayerInfo[PName][pGebannt] ==!0)
{
SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist gebannt.");
return 1;
}
else
{
SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist nicht gebannt.");
return 1;
}
return 1;
}Das Datum wird nur mit 0:: angezeigt und wenn ein spieler gebannt ist sagt es das er nicht gebannt sei.
-
kurze Frage, bekomme hier einen Warning...
warning 219: local variable "hitid" shadows a variable at a preceding level
Code:
falls ihr Function braucht:
Was ist denn da der Fehler? -
Das Datum wird nur mit 0:: angezeigt und wenn ein spieler gebannt ist sagt es das er nicht gebannt sei.
Welche MySQL Version nutzt du denn?
kurze Frage, bekomme hier einen Warning...
Hast du irgendwo "hitid" global (nicht in einer Funktion) deklariert? Zum Beispiel in einem enum.
-
Danke, es war ne globale variable

-
for(new v;v< sizeof(FBIVehs);v++)
{
new kennzeichen[12];
format(kennzeichen, sizeof(kennzeichen), "FBI-%d", randomEx(1000, 9999));
SetVehicleNumberPlate(FBIVehs[v], kennzeichen);
SetVehicleToRespawn(FBIVehs[v]);
if(GetVehicleModel(FBIVehs[v]) == 560)
{
new kennzeichen123456[12];
format(kennzeichen123456, sizeof(kennzeichen123456), "FBI-%d", randomEx(1000, 9999));
SetVehicleNumberPlate(FBIVehs[v], kennzeichen123456);
SetVehicleToRespawn(FBIVehs[v]);
AddVehicleComponent(FBIVehs[v], 1010);
}
}Darf man fragen warum das Nitro nach den Respawn weg ist?

-
-
Ich finde trotzdem den fehler nicht

-
Welche MySQL Version nutzt du denn?
SA:MP MySQL Plugin v2.1.1
-
SA:MP MySQL Plugin v2.1.1
Versuche es so:
ocmd:spielerinfo(playerid,params[])
{
new str[145], name[MAX_PLAYER_NAME], lastjoin[11], gebannt;
if(sscanf(params, "s", name)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
mysql_real_escape_string(name,name);
format(str, sizeof(str),"SELECT LastJoin, Gebannt FROM `accounts` WHERE `Name`='%s'",name);
mysql_query(str);
mysql_store_result();
if(mysql_num_rows() == 0)
{
mysql_free_result();
return SendClientMessage(playerid,ROT,"Spieler existiert nicht.");
}
mysql_fetch_field("LastJoin",lastjoin);
mysql_fetch_field("Gebannt",str);
gebannt = strval(str);
mysql_free_result();
format(str, sizeof(str), "Der Spieler %s war zuletzt am Spieler: %s",name,lastjoin);
SendClientMessage(playerid, 0xFFFFFFFF, str);
if(gebannt != 0) SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist gebannt.");
else SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist nicht gebannt.");
return 1;
} -
@Jeffry, ich benötige einen kleinen anstupser bezüglich der Altersabfrage...
Code:
Code
Alles anzeigennew stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; stock GetPlayerAge(input[]) //©Jeffry { new date[12]; strcat(date, input); if(date[1] == '.') strins(date, "0", 0, 12); if(date[4] == '.') strins(date, "0", 3, 12); if(!date[9] || date[10]) return -1; new day = 10*(date[0]-48)+(date[1]-48); new month = 10*(date[3]-48)+(date[4]-48); new year = 1000*(date[6]-48)+100*(date[7]-48)+10*(date[8]-48)+(date[9]-48); if(year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1) return -1; if(month == 2) { if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return -1; } else if(day > g_days_m[month-1]) return -1; new d, m, y; getdate(y, m, d); new age = y - year; if(m < month) age--; else if(m == month && d < day) age--; return (age < 0) ? (-1) : (age); }Code
Alles anzeigenif(dialogid == DIALOG_ALTERANGABE) { if(response) { if(!response) return 1; new age = GetPlayerAge(inputtext); if(age == -1) return ShowPlayerDialog(playerid, DIALOG_ALTERANGABE, DIALOG_STYLE_INPUT, "Geburtsdatum", "Bitte gebe Dein Geburtsdatum hier ein: (Format: TT.MM.JJJJ)", "Ok", "Abbrechen"); if(age > 18 && age < 30) { PlayerInfo[playerid][pAge] = age; new str[145]; format(str, sizeof(str), "Du hast am %s Geburtstag, damit bist Du %d Jahre alt! Sehr schön :)", inputtext, PlayerInfo[playerid][pAge]); SendClientMessage(playerid, 0xFF0000FF, str); } else SendClientMessage(playerid, COLOR_WHITE, "Ungültige Altersangabe!"); return 1; } }
Das Problem ist bei der Abfrage beim Dialogfenster und zwar wird nicht richtig geprüft ob der Spieler mindestens 18 - 30Jahre alt ...
Und eins habe ich beim stock nicht verstanden, was ist das für ein stock bzw für was ist das? -
if(age > 18 && age < 30)
zu:
if(age >= 18 && age <= 30)
Das wäre dann für 18 - 30.Und eins habe ich beim stock nicht verstanden, was ist das für ein stock bzw für was ist das?
Das ist für die Angabe der Tage pro Monat, damit diese nicht jedes mal lokal deklariert werden, wenn GetPlayerAge ausgeführt wird.
-
-
Ja, das ist an die falsche Stelle gerutscht.
Habe es ausgebessert, sorry. -
Hallöle,
ich möchte gerne, dass meine Befehle nicht nur andere Spieler per ID, sondern auch mit Ihren Namen ansprechen kann.
Mein versuch war bisher gescheitert und sah bisher so aus.Codeocmd:makeadmin(playerid, params[]){ new text[128], pID; if(pData[playerid][pAdminLevel] < 4) return SendClientMessage(playerid, COLOR_RED, "Du darfst diesen Befehl nicht nutzen!"); if(sscanf(params, "d", pID) || sscanf(params, "s", pData[pID][pName])) return SendClientMessage(playerid, COLOR_GREY, "Nutze: /setadmin [SpielerID/Name]"); SendClientMessage(playerid, COLOR_GREY, "Du wurdest zu Adminlevel 4."); return 1; }
Jedoch war es leider falsch, nun würde ich gerne einen Hint/Hinweis bekommen,
ich lerne lieber durch ausprobrieren, aber ich verzweifle gerade und eine kleine Hilfe wäre super ^^.lg
