[AYUDA] Creando un punto de Spawn cuando el jugador muere.
#1

Buenas.

Estoy comenzando ah hacer un GM desde 0. Eh creado un punto de spawn cuando el jugador muere. (lo cree en base a un tutorial que vi) Pero al principio todo bien, pero llega un momento que cada vez que muero. me sale el boton SPAWN y si le doy click, me sale asi:

Pongo los codigos para mostrarles como lo tengo:

La coordenada del hospital esta en un #define
pawn Код:
#define Hospital 1178.4025,-1323.0923,14.1183
La variable
pawn Код:
new bool:Murio[MAX_PLAYERS];
Yo pienso que aqui esta el problema de todo:
pawn Код:
public OnPlayerSpawn(playerid)
{

if(Murio[playerid] == true)
{
SetPlayerPos(playerid,Hospital); // especifico la variable del hospital
SendClientMessage(playerid,-1,"Te moriste. Te cobraron 500$");
Murio[playerid] = false;
return 1;
}
TextDrawShowForPlayer(playerid,Text:RolMaximo);
SetCameraBehindPlayer(playerid); // No se si esto tenga que ver en algo
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
Murio[playerid] = true;// aquн la variable
return 1;
}
LO que es cuando un user se registra lo tengo puesto aqui:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new REGISTRANDO[256];
new INGRESANDO[256];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
format(REGISTRANDO,sizeof(REGISTRANDO),"{FFFFFF}La Cuenta Con El Nombre: %s {FF0000}No Esta Registrada {FFFFFF}\nEscribe Una Contraseсa Para Guardar Tu Cuenta:",PlayerName);
format(INGRESANDO,sizeof(INGRESANDO),"{FFFFFF}La Cuenta Con El Nombre: %s {00FF00}Esta Registrada {FFFFFF}\nEscribe Tu Contraseсa Para Entrar:",PlayerName);

if (dialogid == REGISTRO)
{
new nombrejugador[MAX_PLAYER_NAME], archivo[256];
if (!strlen(inputtext)) return ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Registro", REGISTRANDO , "{FFFFFF}Registrar", "{FFFFFF}Cancelar");
if (!response) return ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Registro",REGISTRANDO, "Registrar", "Cancelar");
GetPlayerName(playerid, nombrejugador, sizeof(nombrejugador));
format(archivo, sizeof(archivo), "/Usuarios/%s.ini", nombrejugador);
dini_Create(archivo);
dini_Set(archivo, "Usuario", nombrejugador);
dini_Set(archivo, "Contraseсa", inputtext);
dini_IntSet(archivo, "Admin", PlayerInfo[playerid][Admin]);
dini_IntSet(archivo, "Dinero", GetPlayerMoney(playerid));
ShowPlayerDialog(playerid, INGRESO, DIALOG_STYLE_INPUT, "Ingresar", INGRESANDO, "Ingresar", "Cancelar");
return 1;
}
// aqui cuando carga los datos
if (dialogid == INGRESO)
{
new nombrejugador[MAX_PLAYER_NAME], archivo[256], comprobante[256];
if (!strlen(inputtext)) return ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Ingresar", INGRESANDO , "{FFFFFF}Ingresar", "{FFFFFF}Cancelar");
if (!response) return ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Ingresar", INGRESANDO , "Ingresar", "Cancelar");
GetPlayerName(playerid, nombrejugador, sizeof(nombrejugador));
format(archivo, sizeof(archivo), "/Usuarios/%s.ini", nombrejugador);
format(comprobante, sizeof(comprobante), "%s", dini_Get(archivo, "Contraseсa"));
if (!strcmp (inputtext, comprobante))
{
PlayerInfo[playerid][Registrado] = 1;
PlayerInfo[playerid][Identificado] = 1;
PlayerInfo[playerid][Admin] = dini_Int(archivo, "Admin");
SetPlayerScore(playerid, dini_Int(archivo, "Nivel"));
GivePlayerMoney(playerid,dini_Int(archivo, "Dinero"));
PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
Spawnear(playerid); // supongo que aqui va esto para que spawnee automaticamente, sin necesidad de presionar el boton spawn
}
else
{
PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
SendClientMessage(playerid, 0xFF0000FF, "Contraseсa Incorrecta");
ShowPlayerDialog(playerid, INGRESO, DIALOG_STYLE_INPUT, "Ingresar", INGRESANDO , "Ingresar", "Cancelar");
ContrasenaIncorrecta[playerid]++;
if(ContrasenaIncorrecta[playerid] == Maximo_Contraseсas_Incorrectas)
{
SendClientMessage(playerid, 0xFF0000FF, "Las Contraseсas Ingresadas No Coinciden Con El Nombre De La Cuenta");
Kick(playerid);
}
}
}

return 1;
}
Al final de todo tengo esto:
pawn Код:
stock Spawnear(playerid)
{
SetSpawnInfo(playerid,0,0,0,0,0,0,0,0,0,0,0,0);
SpawnPlayer(playerid);
}
Reply
#2

Yo tambiйn estoy creando un GM desde 0, pero crearlo de 0 significa no hacer copy y paste que es lo que veo que estбs haciendo. Si vas a mirar otros cуdigos interpretб que hace.

Respecto a lo que preguntas para que no te salga el botуn de spawn al morir tendrнas que modificar el OnPlayerRequestClass de tal manera:

PHP код:
public OnPlayerRequestClass(playeridclassid)
{
    
SpawnPlayer(playerid);
    return 
1;

Para respawnear en el hospital tenйs que modificar el OnPlayerDeath:

PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
    
SetSpawnInfo(playerid0261177.01, -1323.8314.050.0000000);
    return 
1;

En fin.

Por mi parte estoy codeando de 0 y empecй por el registro, por el momento estoy realizando el registro en MySQL ya que estoy familiarizado con йste motor y tengo experiencia scripteando tambiйn en pawn (AMX Mod X).

Suerte en lo tuyo!

EDIT: Por cierto, tu cуdigo es inentendible. Procurб usar el tab para que el cуdigo se mantenga ordenado y puedas leerlo sin problemas.
Reply
#3

Gracias me sirvio, ahora ya no se bugea cuando muere el personaje.

Ehmmm si copio algunas cosas de otros tutoriales... Recien estoy aprendiendo.... claro que no espero hacer gran cosa de GM, pero como digo esto me esta sirviendo para aprender.

Por cierto. Cada vez que muere me quita 100 en el dinero, creo que es lo predeterminado. Como desactivo eso? ... y para hacer que se guarde el Skin que usa?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)