Oh ja, kanns auch nicht.
Du musst
CreateObject(TorInfo[id][t_modelid],TorInfo[id][t_x],TorInfo[id][t_y],TorInfo[id][t_z],TorInfo[id][t_rx],TorInfo[id][t_ry],TorInfo[id][t_rz]);
zu
TorInfo[id][t_objectid] = CreateObject(TorInfo[id][t_modelid],TorInfo[id][t_x],TorInfo[id][t_y],TorInfo[id][t_z],TorInfo[id][t_rx],TorInfo[id][t_ry],TorInfo[id][t_rz]);
ändern und
MoveObject(TorInfo[i][t_modelid],TorInfo[i][t_x],TorInfo[i][t_y],TorInfo[i][t_z]-0.1,3.0);
zu
MoveObject(TorInfo[i][t_objectid],TorInfo[i][t_x],TorInfo[i][t_y],TorInfo[i][t_z]-0.1,3.0);
Beiträge von Jeffry
-
-
Nach der Passworteingabe SetSpawnInfo und SpawnPlayer verwenden.
https://wiki.sa-mp.com/wiki/SetSpawnInfo
https://wiki.sa-mp.com/wiki/SpawnPlayer -
-
ocmd:gate(playerid)
{
for(new i=0; i<sizeof(TorInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, TorInfo[i][t_x],TorInfo[i][t_y],TorInfo[i][t_z]))
{
new hid = -1;
for(new h=0; h<sizeof(hInfo); h++)
{
if(hInfo[h][h_id] == TorInfo[i][t_hausid])
{
hid = h;
}
}
if(hid == -1) return 0;
if(!strcmp(getPlayerName(playerid), hInfo[hid][h_besitzer]))
{
MoveObject(TorInfo[i][t_modelid],TorInfo[i][t_x],TorInfo[i][t_y],TorInfo[i][t_z]-0.1,3.0);
}
}
}
return 1;
} -
Dann setze dort danach das SetPlayerPos mit den gespeicherten Koordinaten hin.
-
Wo spawnst du denn? Poste dazu mal den Code.
-
-
Haus ID 793? Sicher, dass du so viele Häuser hast?
-
Hast du das posX (etc) mit "Float:" im enum deklariert? Wenn nicht, mach das.
SetPlayerPos(playerid, SpielerInfo[playerid][posX], SpielerInfo[playerid][posY], SpielerInfo[playerid][posZ]);
SetPlayerFacingAngle(playerid, SpielerInfo[playerid][posA]);
Setze das mal an entsprechender Position bei OnPlayerSpawn ein. An der Stelle wo es momentan ist, ist es wahrscheinlich zu früh drin, sprich es wird von einem folgenden SetPlayerPos "überschrieben". -
Sind diese Warnungen weg?
C:\Users\Trabuhot\Desktop\Zukunft Reallife\gamemodes\zrl.pwn(22423) : warning 213: tag mismatch
C:\Users\Trabuhot\Desktop\Zukunft Reallife\gamemodes\zrl.pwn(22424) : warning 213: tag mismatch
C:\Users\Trabuhot\Desktop\Zukunft Reallife\gamemodes\zrl.pwn(22425) : warning 213: tag mismatch
C:\Users\Trabuhot\Desktop\Zukunft Reallife\gamemodes\zrl.pwn(22426) : warning 213: tag mismatchHast du den Code beim Laden korrekt eingefügt?
-
Du machst ganz einfach eine weitere Spalte in der Tabelle die hausID heißt, dort trägst du dann das Haus ein, zu dem das Tor gehört.
Das lädst du dann auch, wie die Position. -
Ich gehe davon aus die Warnungen hatte der Code zuvor schon, oder? Abgesehen davon, dass die nicht sein sollten, hast du die pos Variablen so oder so deklariert?
posX,
oder
Float:posX,
?Zweites ist richtig.
-
Ersetze in der foXban Include die drei "Time()" mit "gettime()". Du hast wahrscheinlich die Time-Funktion entfernt.
-
Schreibe das Speichern so (ist etwas verbessert):
Spoiler anzeigen public SpielerSpeichern(playerid){
if(!IsPlayerNPC(playerid) && SpielerInfo[playerid][sEingeloggt]){
GetPlayerPos(playerid,SpielerInfo[playerid][sLogoutPos][0],SpielerInfo[playerid][sLogoutPos][1],SpielerInfo[playerid][sLogoutPos][2]);
MySQLCheckConnection();
new Float:lx,Float:ly,Float:lz,Float:la;
GetPlayerPos(playerid,lx,ly,lz);
GetPlayerFacingAngle(playerid,la);
new Query[2048];
format(Query,sizeof(Query),"UPDATE `accounts` SET `Ausgeloggt`='%d',`IpAdresse`='%s',`Adminlevel`='%d',`Verwarnungen`='%d',`Premium`='%d',`Spielzeit`='%d',`Geschlecht`='%d',`x`='%d',`y`='%d',`z`='%d',`Level`='%d',`Tutorial`='%d',`Aussehen`='%d',`Geld`='%d',`Bank`='%d',`Telefon`='%d',`Telefonnummer`='%d',`Telefonbuch`='%d',`Klingelton`='%d',`Personalausweis`='%d',`PersonalausweisAntrag`='%d',`Arbeitslos`='%d',`ArbeitslosAntrag`='%d',`Job`='%d',`Jobzeit`='%d',",
gettime(),
SpielerInfo[playerid][sIp],
SpielerInfo[playerid][sAdminlevel],
SpielerInfo[playerid][sWarns],
SpielerInfo[playerid][sPremium],
SpielerInfo[playerid][sSpielzeit],
SpielerInfo[playerid][sGeschlecht],
SpielerInfo[playerid][x],
SpielerInfo[playerid][y],
SpielerInfo[playerid][z],
SpielerInfo[playerid][sLevel],
SpielerInfo[playerid][sTutorial],
SpielerInfo[playerid][sSkin],
GetPlayerMoney(playerid),
SpielerInfo[playerid][sBank],
SpielerInfo[playerid][sTelefon],
SpielerInfo[playerid][sTelefonnummer],
SpielerInfo[playerid][sTelefonbuch],
SpielerInfo[playerid][sKlingelton],
SpielerInfo[playerid][sPerso],
SpielerInfo[playerid][sPersoAntrag],
SpielerInfo[playerid][sArbeitslos],
SpielerInfo[playerid][sArbeitslosAntrag],
SpielerInfo[playerid][sJob],
SpielerInfo[playerid][sLastJob]);
format(Query,sizeof(Query),"%s`Fahrlizenz`='%d',`Angellizenz`='%d',`FahrlizenzSperre`='%d',`Fluglizenz`='%d',`FluglizenzSperre`='%d',`Lastkraftwagenlizenz`='%d',`LastkraftwagenlizenzSperre`='%d',`Motorradlizenz`='%d',`MotorradlizenzSperre`='%d',`Schifffahrtslizenz`='%d',`SchifffahrtslizenzSperre`='%d',`Waffenlizenz`='%d',`WaffenlizenzSperre`='%d',",
Query,
SpielerInfo[playerid][sFahrlizenz],
SpielerInfo[playerid][sAngellizenz],
SpielerInfo[playerid][sFahrlizenzLock],
SpielerInfo[playerid][sFlyLic],
SpielerInfo[playerid][sFlyLicLock],
SpielerInfo[playerid][sLKWLic],
SpielerInfo[playerid][sLKWLicLock],
SpielerInfo[playerid][sBikeLic],
SpielerInfo[playerid][sBikeLicLock],
SpielerInfo[playerid][sBoatLic],
SpielerInfo[playerid][sBoatLicLock],
SpielerInfo[playerid][sWeaponLic],
SpielerInfo[playerid][sWeaponLicLock]);
format(Query,sizeof(Query),"%s`Gehalt`='%d',`Fraktion`='%d',`Fraktionssperre`='%d',`Boss`='%d',`Rang`='%d',`Strafpunkte`='%d',`PaydayZeit`='%d',`Respektpunkte`='%d',`Fischskill`='%d',`SaveMats`='%d',`SaveDrogen`='%d',`Mats`='%d',`Bmod`='%d',`Coints`='%d',`Ticketsopen`='%d',`Drogen`='%d',",
Query,
SpielerInfo[playerid][sGehalt],
SpielerInfo[playerid][sFraktion],
SpielerInfo[playerid][sInviteLock],
SpielerInfo[playerid][sBoss],
SpielerInfo[playerid][sRang],
SpielerInfo[playerid][sPunkte],
SpielerInfo[playerid][sPaydayZeit],
SpielerInfo[playerid][sRespektpunkte],
SpielerInfo[playerid][sFishSkill],
SpielerInfo[playerid][sSaveMats],
SpielerInfo[playerid][sSaveDrogen],
SpielerInfo[playerid][sMats],
SpielerInfo[playerid][sBmod],
SpielerInfo[playerid][sCoints],
SpielerInfo[playerid][sTicketsopen],
SpielerInfo[playerid][sDrogen]);
format(Query,sizeof(Query),"%s`Krankenhaus`='%d',`Friedhof`='%d',`TotX`='%f',`TotY`='%f',`TotZ`='%f',`Tode`='%d',`LogoutX`='%f',`LogoutY`='%f',`LogoutZ`='%f',`Fische`='%d',`Haus`='%d',`Spawn`='%d',`Morde`='%d',`Kills`='%d',`Verbrechen`='%d',`Wantedlevel`='%d',`Knast`='%d',`KnastZeit`='%d',`posX`='%f',`posY`='%f',`posZ`='%f',`posA`='%f' WHERE `Spielername`='%s'",
Query,
SpielerInfo[playerid][sKrankenhaus],
SpielerInfo[playerid][sFriedhof],
SpielerInfo[playerid][sTx],
SpielerInfo[playerid][sTy],
SpielerInfo[playerid][sTz],
SpielerInfo[playerid][sTode],
SpielerInfo[playerid][sLogoutPos][0],
SpielerInfo[playerid][sLogoutPos][1],
SpielerInfo[playerid][sLogoutPos][2],
SpielerInfo[playerid][sFishes],
SpielerInfo[playerid][sHaus],
SpielerInfo[playerid][sSpawn],
SpielerInfo[playerid][sMorde],
SpielerInfo[playerid][sKills],
SpielerInfo[playerid][sVerbrechen],
SpielerInfo[playerid][sWantedlevel],
SpielerInfo[playerid][sGefangen],
SpielerInfo[playerid][sGefangenZeit],
lx,
ly,
lz,
la,
SpielerInfo[playerid][sName]);
mysql_query(Query);
return 1;
}
return 0;
}Das hier fügst du beim Laden der Statistiken ein:
mysql_fetch_field("posX",Query); SpielerInfo[playerid][posX] = floatstr(Query);
mysql_fetch_field("posY",Query); SpielerInfo[playerid][posY] = floatstr(Query);
mysql_fetch_field("posZ",Query); SpielerInfo[playerid][posZ] = floatstr(Query);
mysql_fetch_field("posA",Query); SpielerInfo[playerid][posA] = floatstr(Query);Und bei OnPlayerSpawn, bzw. dort wo du den Spieler eben nach dem Spawn an die Position setzt:
SetPlayerPos(playerid, SpielerInfo[playerid][posX], SpielerInfo[playerid][posY], SpielerInfo[playerid][posZ]);
SetPlayerFacingAngle(playerid, SpielerInfo[playerid][posA]);Beachte, dass du in der Datenbank natürlich posX, posY, posZ und posA anlegen musst, sonst geht es nicht.
-
Super, das hast du schon viel geschafft!
Du musst dem Tor noch die ID des Hauses zuweisen, dann kannst du über das Tor das Haus herausfinden, und dann folgendes abfragen:
if(!strcmp(SpielerName(playerid), HausInfo[TorInfo[i][t_hausid]][h_besitzer])
{
//Kann das Tor öffnen
} -
Das heißt oft auch LoginPlayer oder so, das musst du schon finden, sonst kannst du da ja nichts hinzufügen.
Schau mal ob du mit dem Code von Pascal schon klar kommst, wenn nicht, suche noch den Login-Code und poste den dann, ansonsten einfach mal das was nach dem Login passiert, genau. -
Nein, die Zeile "ackslimit".
https://wiki.sa-mp.com/wiki/Server.cfgFalls die nicht drin ist, schreibe sie rein.
-
Hast du denn schon einen Code mit dem du den Spieler speicherst und lädst?
Wenn ja, poste beide mal. -
Erhöhe das ackslimit in der server.cfg auf 5000.
-
Ändere
format(string,sizeof(string),"Heute ist die Gewinnernummer, {FF4000}%d"#COLOR_HEX_GREEN".",LottoZahl);
SendClientMessageToAll(COLOR_GREEN,string);
zu
format(string,sizeof(string),"Heute ist die Gewinnernummer, {FF4000}%d"#COLOR_HEX_GREEN".",LottoZahl);
SendClientMessage(playerid, COLOR_GREEN, string);