Sziasztok! Mivel konkrétan nem tudom mi a probléma forrása, leírom mi történik.
Egy RP Modot írok, és a cél az lenne, hogy a jelszó beírása után egyből spawnolja le a játékost a városháza elé.
Jelenleg ami történik:
-Betölt a SA:MP
-Bedobja a Bejelentkező Dialogot
-Megjelenik a Truth skin, hátul a skinválasztóba, a Spawn, és a \'<<\', \'>>\' gombok.
Ha beírom a jelszót, és hibás kickel, ha jó, akkor bedob a skinválasztóba, és azt a skin változót(Skint) jeleníti meg, amit regisztrációkor nemtől függővé tettem (férfi esetében X skin, nő esetében Y skin)
-Ha a skincserélős nyilakra kattintok, újra bedobja a dialogot(ez nem is baj egyébként, hiszen ennek az eltörlése a cél, ha spawnolok lerakja a kívánt helyre. A cél az lenne, hogy a Skin változómat rakja le a megadott koordinátára.
Ahogy most néz ki a dolog:
OnGameModeInit-be:
AddPlayerClass(Skin,1482.0975,-1683.1880,14.0859,179.4630,0,0,0,0,0,0);
OnPlayerRequestClass-be:
SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
SetPlayerFacingAngle(playerid, 270.0);
SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
new file[256];
GetPlayerName(playerid, Nev,sizeof(Nev));
format(file,sizeof(file), \"/Karakterek/%s.ini\", Nev);
new string[256];
if(!fexist(file))
{
format(string, sizeof string, \"Üdv %s! \\nA regisztrációhoz \\nadd meg a jelszavad!\", Nev);
ShowPlayerDialog(playerid, regisztracio, DIALOG_STYLE_PASSWORD, \"Regisztráció\", string, \"Mehet\", \"Kilépés\");
}
if(fexist(file))
{
format(string,sizeof string, \"Írd be a jelszavad:\");
ShowPlayerDialog(playerid, bejelentkezes, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", string, \"Mehet\", \"Mégse\");
}
return 1;
}
OnPlayerSpawn-ban:
public OnPlayerSpawn(playerid)
{
if(JatekosInfo[playerid][Regizett] == 0)
{
ShowPlayerDialog(playerid, nemdialog, DIALOG_STYLE_LIST, \"Nem kiválasztása\", \"Férfi\\nNő\", \"Mehet\", \"\");
JatekosInfo[playerid][Regizett] = 1;
}
SetPlayerSkin(playerid,JatekosInfo[playerid][skin]);
return 1;
}
Ha OnGameModeInitből kitörlöm Az AddPlayerClasst, a határba dobja ki a skint, némi repülés után. Csak azért írtam le mindent, mert nem igazán tudom hol kéne a hibát keresni. :( Nagy pacsi annak aki megoldja.
public OnPlayerConnect(playerid) {
new file[256];
GetPlayerName(playerid, Nev,sizeof(Nev));
format(file,sizeof(file), \"/Karakterek/%s.ini\", Nev);
new string[256];
if(!fexist(file)) {
format(string, sizeof string, \"Üdv %s! \\nA regisztrációhoz \\nadd meg a jelszavad!\", Nev);
ShowPlayerDialog(playerid, regisztracio, DIALOG_STYLE_PASSWORD, \"Regisztráció\", string, \"Mehet\", \"Kilépés\");
}
if(fexist(file)) {
format(string,sizeof string, \"Írd be a jelszavad:\");
ShowPlayerDialog(playerid, bejelentkezes, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", string, \"Mehet\", \"Mégse\");
}
return 1;
}
public OnPlayerRequestClass(playerid, classid) {
SpawnPlayer(playerid);
return 1;
}
vagy úgy csinálod meg, hogy amint regisztrál, vagy beírja a jelszót, akkor egyből lespawnolja a SpawnPlayer funkció.
Köszönöm, hát megcsináltam így, annyi változást tett, hogy eltűnt a Truth skines dolog, de a login után továbbra is ott van a Spawn gomb, és társai :Cry2:
Ha:
public OnPlayerRequestClass(playerid, classid)
{
SpawnPlayer(playerid);
return 1;
}
Akkor bármely gombot nyomom meg, ((>>,<<,Spawn) lespawnolja,
ha pedig OnDialogRespone-ba is berakom,
SendClientMessage(playerid,COLOR_GREEN, \"(( Sikeresen bejelentkeztél! ))\");
SetPlayerSkin(playerid,JatekosInfo[playerid][skin]);
SpawnPlayer(playerid);
Akkor pedig csak a Spawn gomb lenyomására történik bármi is...(de végre nem kell újra loginolni)
Valami olyasmi megoldás nem létezik, hogy OnPlayerRequestclasst ugorja át, vagy OnPlayerRequestClass-be nem csak egy sima Spawn(playerid);kerülne, hanem egy koordinátás függvény, mint pl AddPlayerClass?
Mert jelenleg:
public OnGameModeInit()
{
AddPlayerClass(0,1482.0975,-1683.1880,14.0859,179.4630,0,0,0,0,0,0);
return 1
Innen szedi a spawn koordinátát, gondolom...Bár ez csak egy ötlet.