Guten Tag,
ich weiß nicht wieso, ich habe mein GTA nach langer zeit wieder gestartet und dann stand dort Fehler 202.
Ich habe auch schon vieles versucht , jedoch bleibt der Fehler...
hat wer von euch evt. dasselbe Problem mal gehabt?
#erledigt
Guten Tag,
ich weiß nicht wieso, ich habe mein GTA nach langer zeit wieder gestartet und dann stand dort Fehler 202.
Ich habe auch schon vieles versucht , jedoch bleibt der Fehler...
hat wer von euch evt. dasselbe Problem mal gehabt?
#erledigt
schau mal hier
http://forum.sa-mp.com/showthread.php?t=319853
bzw. das letzte thema davon
If anyone still might look into this thread, then I just encountered that error on me and I debugged like a hour or so. Cause I had lots of functions which depended on each other nested in each other and so. And I finally catched the reason why it gives that error.
I had one function where I wanted to return string from one of my functions which also returned string from function. So yeah, returning string from function can cause an issue like this. So yeah to fix this, before you return string, you have to get your string which you want to return, formatted in some string variable, and then you have to return the string variable. (It also might be my own incompetent by not knowing maybe it's written in PAWNs refenrece that you can't do that like this but yeah...)
So yeah maybe it helps someone in the future. Im going to copy and paste that case to other topics too. Maybe it helps some fellow scripters on the path.
Hey ich kenn mich nicht ganz so gut aus bei der serverlog aber das hier
[23:55:07] [debug] Run time error 5: "Invalid memory access"
[23:58:51] [debug] Run time error 6: "Invalid instruction"
sieht nicht ganz richtig aus...
Guten Tag,
wenn meine Berechnungen stimmen sollten, liest du dir gleich den nach folgenden Text durch.
Wer bin ich?
Früher habe ich Pawn Videos zu Samp erstellt und jetzt wollte ich mein alt:V wissen mit euch teilen.
Natürlich ist das etwas spät, aber evtl. hilft es dem ein oder anderen noch.
Falls ich sogar Fehler mache oder mich verbessern kann, lasst gerne einen Kommentar da.
Themen:
(aktuell) alt:V Basics und ab und zu Showcase Videos
(früher) samp Pawn
Links:
YouTube: https://www.youtube.com/@MoglyTv
Schlusswort:
Vielen Dank das du bis hierhin gelesen hast und evtl. sieht man sich in den Kommentaren wieder.
Mit freundlichen Grüßen
Mogly1
Also mir gefällt sie aber ich habe keine hohen ansprüche bei Maps.
Jeder sein Geschmack, ich find die Texturen schön
evt. auch nur mysql_query? XD googel doch eifnach mal
if(hbi[i][h][hb_ID] != 0) continue; wo kommt z.b das i her
kansnt du mal den ganzen code schicke?
ich weiß leider nicht was für ne mysql version du hast evt. mysq_pquery?
Wird es denn nun ein Rp oder Reallife server?
2043 | PlayerInfo[playerid][id] | id ist nicht definiert anscheinend
2044 | mysql_function,query(dbhandle,query,false,"",""); | nach function ist ein komma ^^, glaube seiht so aus mysql_function_query
ist dies das einzige wo du das object moven lässt?
Dann mach es so
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(startbmx[playerid] == GetPlayerVehicleID(playerid))
{
SetVehicleParamsEx(startbmx[playerid], false, true, false, 0, true, false, false);
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
if(startbmx[playerid] == GetPlayerVehicleID(playerid))
{
SetVehicleParamsEx(startbmx[playerid], true, true, false, 0, true, false, false);
SendClientMessage(playerid,-1,"An");
}
}
return 1;
}
und beim Spawnen mach den Motor auch schon aus
kommt gar keine nachricht ?
edit: habs jetzt erst geschekt, du musst doch alle spieler auf den Server durchgehen ob sie admins sind nit die palyerid ob der spieler der connectet admin ist machs mal so
public OnPlayerConnect(playerid)
{
if (IsPlayerNPC(playerid))
return 1;
new string[256], playerip[16];
[...]
for(new i=0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i))continue;
if (SpielerInfo[i][sAdminrank] > 0) {
GetPlayerIp(playerid, playerip, sizeof(playerip));
format(string, sizeof(string), "%s (ID: %i, IP: %s) hat den Server betreten.", UserName(playerid), playerid, playerip);
} else {
format(string, sizeof(string), "%s (ID: %i) hat den Server betreten.", UserName(playerid), playerid);
}
SendClientMessage(i,dunkelgrün, string);
}
[...]
return 1;
}
Ja musst nur schauen ob er auf funkt, glaube da gabs nen problem wenn die zeile dann zu lang wird ^^, genau weiß iche s aber nicht mehr
dir fehlt hinter continue ein " ; "
also hier
if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue
edit:
gluabe so ist am ebsten
stock SaveUserStats(playerid)
{
//Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
if(!PlayerInfo[playerid][pLoggedIn]) return 1;
//Ansonsten speichere sie
new query[256];
mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d', alevel = '%d',",
PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pAlevel];
mysql_format(handle, query, sizeof(query), "%s fraktion = '%d', rank = '%d', perso = '%d', spawnchange = '%d' WHERE id = '%d'",
query,PlayerInfo[playerid][pFraktion], PlayerInfo[playerid][pRank], PlayerInfo[playerid][pPerso],PlayerInfo[playerid][pSpawnchange], PlayerInfo[playerid][p_id]);
//Das Query wird abgesendet
mysql_pquery(handle, query);
return 1;
}
Nein alles gut so nut noch den Timer setzen eig.
Ich hätte es so angefangen...
wegen mysql musst schauen mit deiner version davon dann.
hier:
Unter OnpalyerConnect die Textdraws anzeigen lassen ohne das Der Spieler gespawnt wurde und dann die abfrage
public OnPlayerConnect(playerid)
{
//textdraws zeigen...
}
danach musst du schauen ob du PalyerTextdraws nutz oder nur textdraws je anch dem halt OnPlayerClickTextDraw oder OnPlayerClickPlayerTextDraw
dann halt wie oben genant anpassen
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw0[playerid])// Also Die Box textdraw dann wo Passwort steht
{
new query[256];
mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE Username='%e'", Spielername(playerid));
mysql_tquery(Handle, query, "UserCheck", "i", playerid);
}
return 1;
}
dann bei UserCheck
forward UserCheck(playerid);
public UserCheck(playerid)
{
new num_rows, num_fields;
cache_get_data(num_rows, num_fields, Handle);
SetPlayerVirtualWorld(playerid,1);
if(num_rows == 0)
{
//Register..
ShowPlayerDialog(playerid, DIALOG_Passwort, DIALOG_STYLE_PASSWORD, "Anmeldung", "wähle dein Pw aus...", "Anmelden", "Abbrechen");;
}
else
{
//Login..
ShowPlayerDialog(playerid, DIALOG_Passwort, DIALOG_STYLE_PASSWORD, "Anmeldung", "gib dein Pw an...", "Anmelden", "Abbrechen");
}
}
dann bei Dialog_Login
if(dialogid == DIALOG_Passwort)
{
if(!response) return 1;
SetPVarString(playerid,"Pw",inputtext);
//hier dein Textdraw anpassen ist nur nen beispiel
new Text[100];
a=strlen(inputtext);
for(new i=0;i<a;i++)
{
format(Text, sizeof(Text), " %s*",Text);//setzt für jeden buchstaben ein * eig- nicht getestet nur gerade eingefallen
}
TextDrawSetString(Textdraw3[playerid], Text);
}
dann noch dies wenn er auf Registiren bzw dann am besten Login drücken will
//wieder anpassen OnPlayerClickPlayerTextDraw evt.
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw1[playerid])// Also Der Button zum login dann
{
new query[256], passworteingabe[128];
GetPVarString(playerid,"Pw",passworteingabe,128);;
mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE Username='%e' AND Passwort=MD5('%e')", Spielername(playerid),passworteingabe);
mysql_tquery(Handle, query, "OnPasswordResponse", "i", playerid);
}
return 1;
}
dann dies hier
forward OnPasswordResponse(playerid);
public OnPasswordResponse(playerid)
{
new num_fields, num_rows;
cache_get_data(num_rows, num_fields);
if(num_rows == 0)
{
SendClientMessage(palyerid,1,"Falsches Pw");
}
else
{
//Passwort richtig..
SendClientMessage(playerid,gelb, "Erfolgreich eingeloggt.");
//Spieler Laden lassen
}
return 1;
}
nun noch Reg.
//wieder anpassen OnPlayerClickPlayerTextDraw evt.
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw1[playerid])// Also Der Button zum Reg dann
{
new query[256], passworteingabe[128];
GetPVarString(playerid,"Pw",passworteingabe,128);
mysql_format(Handle, query, sizeof(query), "INSERT INTO user (Username, Passwort) VALUES ('%e',MD5('%e'))", Spielername(playerid), passworteingabe);
mysql_function_query(Handle, query, true,"OnPlayerRegister", "i",playerid);
}
return 1;
}
und das ende
forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
pInfo[playerid][db_id] = cache_insert_id(Handle);
TogglePlayerSpectating(playerid, 0);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
return 1;
}
Dies ist wie gesagt nur ne Idee und nicht 100% für dich angepasst bau dir was daraus
Na dann so
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
if(startbmx[playerid] == GetPlayerVehicleID(playerid))
{
//Motor starten.
}
else
{
//Motor nicht starten
}
}
}