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...
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...
Dich Interessiert Pawno, hier und da mal ein Spiel und kleine Videos?
Dann bist du hier genau richtig.
Über mich:
Ich bin 17 Jahre alt
Hauptsächlich mache ich Pawno Videos
Natürlich versuche ich so oft wie es geht ein neues Video zu machen das evt. Abwechslung bringt
Hauptspiele: LoL & Rocket
Kanal:
Youtube
Nun denn...
Hoffe ich auf viel feedback
damit ich mich verbessern kann
mfg 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
}
}
}
müsste nicht LIMIT 1" auch noch im log stehen?
evt, eifnach den string mal etwas erhöhen
Hier falls dir irgend eins helfen sollte
https://www.youtube.com/playli…8ajrY2oORiCwAXylI9qFTQQld
mfg. mogly1