Ich habe gestern ein Selfmade angefangen.
Login-/Registersystem funktioniert. Jedoch stellt mir das SpawnSystem eine großes Problem dar.
Ich habe alles versucht, jedoch wenn ich auf den "Spawn" Button klick kommt nur eine Nachricht, die sich abgleicht, mit der, wenn man eine vorgegeben Fläche verlässt und dann wieder zurückgeworfen wird.
Außerdem wird der Screen weiß und der Text-Chat spinnt.
#include <a_samp>
#include <dini>
#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x33AA33AA
enum SInfo
{
Adminlevel,
}
new SpielerInfo[MAX_PLAYERS][SInfo];
main()
{
print("\n----------------------------------");
print(" Army Übungsserver" );
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("SA:BW v0.1a");
UsePlayerPedAnims();
ShowPlayerMarkers(false);
DisableInteriorEnterExits();
EnableStuntBonusForAll(false);
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerVirtualWorld(playerid,1);
return 1;
}
public OnPlayerConnect(playerid)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
if(dini_Exists(Playerdatei))
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Bitte geben sie nun ihr Passwort ein","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registration","Bitte geben sie ihr gewünschtes Passwort ein","Registerieren","Abbrechen");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
SpielerSpeichern(playerid);
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_LOGIN)
{
if(response == 0)
{
SendClientMessage(playerid,COLOR_RED,"Du hast den Login Vorgang abgebrochen!");
Kick(playerid);
return 1;
}
if(response == 1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,COLOR_GREEN,"Dein eingegebenes Passwort war nicht lang genug!");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Ihr Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen");
return 1;
}
else
{
Login(playerid,inputtext);
SetPlayerPos(playerid,222.1624,1872.6077,13.7344);
SetPlayerInterior(playerid,0);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,88.7341);
return 1;
}
}
}
if(dialogid == DIALOG_REGISTER)
{
if(response == 0)
{
SendClientMessage(playerid,COLOR_RED,"Sie haben die Registrierung abgebrochen!");
Kick(playerid);
return 1;
}
if(response == 1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,COLOR_GREEN,"Dein eingegebenes Passwort war nicht lang genug!");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrierung auf DeinRL","Willkommen auf DeinRL City!\nBitte geben sie nun ihr gewünschtes Passwort ein","Register","Abbrechen");
return 1;
}
else
{
Register(playerid,inputtext);
SetPlayerPos(playerid,222.1624,1872.6077,13.7344);
SetPlayerInterior(playerid,0);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,88.7341);
return 1;
}
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock Register(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_Create(Playerdatei);
dini_Set(Playerdatei,"Passwort",key);
SetPlayerScore(playerid,1);
dini_IntSet(Playerdatei,"Adminlevel",0);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock Login(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
{
AccountLaden(playerid);
}
else
{
SendClientMessage(playerid,COLOR_GREEN,"Du hast ein falsches Passwort eingegeben!");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen");
}
return 1;
}
stock AccountLaden(playerid)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
SpielerInfo[playerid][Adminlevel] = dini_Int(Playerdatei,"Adminlevel");
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_IntSet(Playerdatei, "Adminlevel", SpielerInfo[playerid][Adminlevel]);
}
}