Sooo warum kapiert das niemand? Selfmade oder GF?
[Frage]Player Spawn
- The_Cop
- Geschlossen
- Erledigt
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
-
-
naja alles was mit den spawns zu tun hat wird unter OnPlayerSpawn und SetPlayerSpawn sein
-
Du speicherst einfach in der Account.ini 3 weitere Daten bzw. Floats.
Float:PlayerX,
Float:PlayerY,
Float:PlayerZBei OnPlayerDisconnecte machste einfach
new Float:ppX,Float:ppY,Float:ppZ;
GetPlayerPos(playerid,ppX,ppY,ppZ);
new inter = GetPlayerInterior(playerid);PlayerInfo[playerid][PlayerX] = ppX;
PlayerInfo[playerid][PlayerY] = ppY;
PlayerInfo[playerid][PlayerZ] = ppZ;PlayerInfo[playerid][pInt] = inter;
Bei OnPlayerSpawn jenachdem wie es in dem Script ist machste
SetPlayerPos(playerid,PlayerInfo[playerid][PlayerX]...);
SetPlayerInterior(playerid,PlayerInfo[playerid][pInt]);Was solln daran so schwer sein?
Wenn Du schlau bist,machst Du eine weitere spalte und speicherst darin den Grund von OnPlayerDisconnect..wenn er ne Exe hatte setzt Du die Variable auf 1.Bei OnPlayerSpawn musst Du dann nur Abfragen ob die Variable auf 1 steht,wenn ja,Spawn beim lezten Standort,wenn nein,dann halt wie gewohnt..
-
das geht du musst nur bei OnPlayerRegister/Update/Login diese Daten abfragen bzw speichern
-
Alter,aus Copy&Paste lernst Du nichts!!
Schau Dir die Codezeilen an dann findest Du die Errors auch!
Ich versteh garnet warum Dein Name "Pawno" enthält wenn Du anscheinend 0 Ahnung davon hast-.-
-
ich lerne scripten jetzt seit gestern, aber du musst schon die sachen wie FloatZ etc durch kooridnaten ersetzen.. sonst wird das nie was
du sollst ja lernen wie was geht, und nicht paste and bin lernen.. das kann jeder!mfg
//EDIT: ansonsten einfach mal SuFu benutzen! da findeste genug
-
@S.Pawno
Bist Du Dir eigentlich bewusst das Du gerade allen Scriptern hier vorgeworfen hast arrogant zu sein?!
So machst Du Dir keine Freunde und somit bekommst Du auch keine Scripthilfe von hier..Wenn Du mal lesen würdest was PaddyBoy geschrieben hat,würdest Du wissen das es funktioniert.
Wenn man nicht scripten kann,sollte man erstmal die Basics lernen oder sich einige Tutorials durchlesen oder eventuell mal die SuFu(Suchfunktion) benutzen!Wie gesagt,Du musst nur in der PlayerArray
Float:PlayerX,
Float:PlayerY,
Float:PlayerZ unten eintragen,das ganze automatisch in die Account.ini eintragen,speichern und laden lassen.Bei OnPlayerDisconnect:
new Float:ppX,Float:ppY,Float:ppz;
GetPlayerPos(playerid,ppX,ppY,ppZ);
PlayerInfo[playerid][PlayerX] = ppX;
PlayerInfo[playerid][PlayerY] = ppY;
PlayerInfo[playerid][PlayerZ] = ppZ;
PlayerInfo[playerid][pInt] = GetPlayerInterior(playerid);Dann bei OnPlayerSpawn
SetPlayerPos(playerid,PlayerInfo[playerid][PlayerX],PlayerInfo[playerid][PlayerY],PlayerInfo[playerid][PlayerZ]);
SetPlayerInterior(playerid,PlayerInfo[playerid][pInt]);Das ist genau das was ich vorhin schon beschrieben habe!
@gwelter
Nein ist auch falsch!
Wenn man dort nur Koordinaten eingibt,spawnt der Player ja immer an der gleichen Stelle und nicht da wo er beim Disconnect war.//Edit:
So,damit hier nun endlich alles geklärt ist:Oben bei den Includes:
#include <Dini>OnPlayerConnect:
public OnPlayerConnect(playerid)
{
new str[128],name[32];
GetPlayerName(playerid,name,32);
format(str,128,"/Spawndata/%s.ini",name);
if(!dini_Exists(str))
{
dini_Create(str);
dini_FloatSet(str,"PlayerX",0.0000);
dini_FloatSet(str,"PlayerY",0.0000);
dini_FloatSet(str,"PlayerZ",0.0000);
dini_IntSet(str,"PlayerInt",0);
}
return 1;
}OnPlayerDisconnect:
public OnPlayerDisconnect(playerid, reason)
{
SaveSpawnData(playerid);
return 1;
}OnPlayerSpawn:
public OnPlayerSpawn(playerid)
{
new str[128],name[32];
GetPlayerName(playerid,name,32);
format(str,128,"/Spawndata/%s.ini",name);
if(dini_Exists(str))
{
new Float:ppX = dini_Float(str,"PlayerX");
new Float:ppY = dini_Float(str,"PlayerY");
new Float:ppZ = dini_Float(str,"PlayerZ");
new inter = dini_Int(str,"PlayerInt");
SetPlayerPos(playerid,ppX,ppY,ppZ);
SetPlayerInterior(playerid,inter);
}
else
{
//SetPlayerPos(playerid,Dein_Spawn_X,Dein_Spawn_Y,Dein_Spawn_Z);
//SetPlayerInterior(playerid,Interiorid);
}
return 1;
}stock SaveSpawnData(playerid) :
stock SaveSpawnData(playerid)
{
new name[32],str[128];
new Float:ppX,Float:ppY,Float:ppZ;
GetPlayerPos(playerid,ppX,ppY,ppZ);
GetPlayerName(playerid,name,32);
format(str,128,"/Spawndata/%s.ini",name);
if(dini_Exists(str))
{
dini_FloatSet(str,"PlayerX",ppX);
dini_FloatSet(str,"PlayerY",ppY);
dini_FloatSet(str,"PlayerZ",ppZ);
dini_IntSet(str,"PlayerInt",GetPlayerInterior(playerid));
}
}Wurde auf Funktionalität geprüft,weist keine Fehler auf.
-
breadfish.de
Hat das Thema geschlossen.