Hola Zodiaco
їHas intentado auto-spawner al jugador y luego mostrar el diбlogo de registro junto con las cбmaras? |
public OnPlayerSpawn(playerid)
{
if(!EstaLogueado{playerid})//Si el jugador no estб logueado
{
if(!EstaRegistrado{playerid})//Si el jugador no estб registrado
{
//Acб el script de registro, donde muestras el dialog y el cambio de cбmaras
}
else
{
//Acб el script de logueo ya que el jugador estб registrado, donde muestras el dialog y el cambio de cбmaras
}
}
return 1;
}
public OnPlayerRequestClass(playerid)
{
if(!EstaLogueado{playerid})//Si el jugador no estб logueado, o sea recien entra al server
SpawnPlayer(playerid);//Spawnearlo para que pueda ver a los otros jugadores
return 1;
}
Bien, supongo que tendrбs el script de registro/login dentro del callback OnPlayerConnect u OnPlayerRequestClass.
Bien, tendrбs que cambiar de lugar ese script de registro al callback OnPlayerSpawn, un ejemplo de donde irнa y lo que tendrнas que hacer: pawn Код:
|
public Cuenta(playerid)
{
new PlayerName[MAX_PLAYER_NAME], string[128], file[256], tmp3[50];
GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
new pame[MAX_PLAYER_NAME];
GetPlayerName(playerid, pame, sizeof(pame));
new dialogstr[270];
SetPlayerTime(playerid, 12, 0);
//SetPlayerAttachedObject( playerid, 0, 18864, 1, 0.000000, 0.000000, 0.000000, 0.000000, 90.000000, 0.000000, 1.000000, 1.000000, 1.000000 );//nieve cae
//SetPlayerPos(playerid, 2037.9799,1342.7332,10.6719); // importante para que cargue el mapa
//SetPlayerVirtualWorld(playerid,0);
SetPlayerPos(playerid, 2090.2927,1293.2604,10.8128); // importante para que cargue el mapa
InterpolateCameraPos(playerid, 2349.223632, 1285.237426, 105.555534, 2045.112670, 1322.838256, 18.549226, 10000);
InterpolateCameraLookAt(playerid, 2344.918701, 1286.464843, 103.328094, 2042.972534, 1327.138671, 17.161443, 10000);
if(!udb_Exists(PlayerName2(playerid))) format(dialogstr,sizeof(dialogstr),"{FFFFFF}Hola! {0080FF}%s:\n\n{FFFFFF}Registrate para cargar tus estadisticas:\n\nArmas\n\nDinero\n\nScore\n\nIngresa una {0080FF}Contraseсa:", pame), ShowPlayerDialog(playerid,9049,DIALOG_STYLE_PASSWORD, "{FFFFFF}|| REGISTRO ||", dialogstr, "Registrar", "");
else
{
PlayerInfo[playerid][Registered] = 1;
format(file,sizeof(file),"/ladmin/users/%s.sav",udb_encode(PlayerName));
new tmp2[256]; tmp2 = dini_Get(file,"ip");
if( (!strcmp(tmp3,tmp2,true)) && (ServerInfo[AutoLogin] == 8) )
{
LoginPlayer(playerid);
if(PlayerInfo[playerid][Level] >= 8)
{
format(string,sizeof(string),"[CUENTA]: Has sido automбticamente logueado. [NivelAdmin: %d] [Vip: %d] [Nivel: %d]", PlayerInfo[playerid][Level],PlayerInfo[playerid][pVip], PlayerInfo[playerid][Nivel] );
SendClientMessage(playerid,green,string);
}
else format(string,sizeof(string),"[CUENTA]: Has sido automбticamente logueado. [NivelAdmin: %d] [Vip: %d] [Nivel: %d]", PlayerInfo[playerid][Level],PlayerInfo[playerid][pVip], PlayerInfo[playerid][Nivel] ); SendClientMessage(playerid,orange,string);
}
else format(dialogstr,sizeof(dialogstr),"{FFFFFF}Bienvenido {0080FF}%s {FFFFFF}al server\n\n{FFFFFF}Ingresa tu {0080FF}Contraseсa \n\n{FFFFFF}Para Poder Empezar Ha Jugar Y Divertirte:", pame), ShowPlayerDialog(playerid, 9048, DIALOG_STYLE_PASSWORD, "{FFFFFF}SERVER", dialogstr, "Entrar", "");
}
return 1;
}
їTienes una variable que guarde informaciуn acerca de que si el jugador estб logueado o no?
|
if(dialogid == 9049)
{
if (response)
{
if (PlayerInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,red,"[CUENTA]: Usted ya estб registrado y conectado.");
if (udb_Exists(PlayerName2(playerid))) return SendClientMessage(playerid,red,"[CUENTA]: Esta cuenta ya existe, por favor, utilice '/ login [contraseсa]'.");
if (strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 9049, DIALOG_STYLE_INPUT, "{FFFFFF} || Registro || ~~ Crazylandia", "{FF0000}[ERROR]: No has escrito una contraseсa! \n\nTu cuenta no estб Registrada, escribe una contraseсa \nPara Guardar Tus Datos (Score, Nivel, Dinero, Experiencia)\n\n{01C8FF}Si no te quieres Registrar has click en No Registrar", "Aceptar", "No Registrar");
if (strlen(inputtext) < 4 || strlen(inputtext) > 20) return ShowPlayerDialog(playerid, 9049, DIALOG_STYLE_INPUT, "{00EEFF} || Registro || ~~ |-[Crazylandia]-|™", "{FF0000}La contraseсa debe ser superior a 3 carбcteres\n\nTu cuenta no estб Registrada, escribe una contraseсa \nPara Guardar Tus Datos (Score, Nivel, Dinero, Experiencia)\n\n{01C8FF}Si no te quieres Registrar has click en No Registrar", "Aceptar", "No Registrar");
if (udb_Create(PlayerName2(playerid),inputtext))
{
new file[256],name[MAX_PLAYER_NAME], tmp3[100];
new strdate[20], year,month,day; getdate(year, month, day);
GetPlayerName(playerid,name,sizeof(name)); format(file,sizeof(file),"/ladmin/users/%s.sav",udb_encode(name));
GetPlayerIp(playerid,tmp3,100); dini_Set(file,"ip",tmp3);
dUserSetINT(PlayerName2(playerid)).("registered",1);
format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
dini_Set(file,"RegisteredDate",strdate);
dUserSetINT(PlayerName2(playerid)).("loggedin",1);
dUserSetINT(PlayerName2(playerid)).("banned",0);
dUserSetINT(PlayerName2(playerid)).("level",0);
dUserSetINT(PlayerName2(playerid)).("AccountType",0);
dUserSetINT(PlayerName2(playerid)).("LastOn",0);
dUserSetINT(PlayerName2(playerid)).("money",0);
dUserSetINT(PlayerName2(playerid)).("Banka",0);
dUserSetINT(PlayerName2(playerid)).("kills",0);
dUserSetINT(PlayerName2(playerid)).("deaths",0);
dUserSetINT(PlayerName2(playerid)).("hours",0);
dUserSetINT(PlayerName2(playerid)).("minutes",0);
dUserSetINT(PlayerName2(playerid)).("seconds",0);
dUserSetINT(PlayerName2(playerid)).("clan",0);
dUserSetINT(PlayerName2(playerid)).("lider",0);
PlayerInfo[playerid][LoggedIn] = 1;
PlayerInfo[playerid][Registered] = 1;
new stringCuenta[256];
format(stringCuenta, sizeof (stringCuenta), "{FFFFFF}Fuiste registrado en nuestra base de datos exitosamente.\n\n- Tu nick: {0080FF}%s\n{FFFFFF}- Tu contraseсa:{0080FF} %s\n{FFFFFF}- Dinero de inicio: {0080FF}$20000\n\n{FFFFFF}Pulse en Aceptar para continuar...", pName(playerid), inputtext);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, " {FFFFFF}|| Registrado Correctamente ||",stringCuenta , "Aceptar", "");
GivePlayerMoney(playerid, 20000);// dinero despues del registro le da 20000
return PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
}
return 1;
}
}
Primeramente debes usar SetPlayerPos segъn las posiciones de cбmara.
|