Duda -
Lorkm - 13.07.2012
їComo puedo hacer que cuando un NPC crashee acceda inmediatamente?
їPor que crashean los npcs?
Respuesta: Duda -
Bu11Sh0t - 14.07.2012
1. Puedes usar Kick(); para que se crashee. Es lo unico que se me ocurre
2. Generalmente crashean porque no existe el archivo .rec en servidor/npcmodes/recordings y no existe el archivo .amx en servidor/npcmodes. Tambien puede causarse a que tu servidor tiene un sistema de registro y logueo, y como el NPC no escribe contraseсas ni nada lo kickea.
En caso de ser el registro, puedes agregar a cada callback (OnPlayerConnect, OnPlayerRequestClass, OnPlayerRequestSpawn, OnPlayerSpawn, etc..) un
pawn Код:
if(IsPlayerNPC(playerid)) return 1;
Re: Duda -
Lorkm - 14.07.2012
Muchas gracias por responder, lo primero quizбs no me explique bien.
Necesito que cuando un npc entre a mi servidor y en caso de que crashee, reingrese automaticamente
Respuesta: Duda -
Bu11Sh0t - 14.07.2012
Lo siento, no leн muy bien. Puedes hacer un timer que detecte si el player este conectado, si no lo conecte:
pawn Код:
public OnGameModeInit()
{
ConnectNPC("BotName", "BotFile");
SetTimer("Server", 1000, 1);
return 1;
}
forward Server();
public Server()
{
new i = GetPlayerIDFromName("BotName");
if(!IsPlayerConnected(i)) ConnectNPC("BotName", "BotFile");
}
La funcion GetPlayerIDFromName esta en el archivo FSDebug (creo) de no ser asi aqui lo dejo:
pawn Код:
stock GetPlayerIDFromName(const playername[], partofname=0)
{
new i;
new playername1[64];
for (i=0;i<MAX_PLAYERS;i++)
{
if (IsPlayerConnected(i))
{
GetPlayerName(i,playername1,sizeof(playername1));
if (strcmp(playername1,playername,true)==0)
{
return i;
}
}
}
new correctsigns_userid=-1;
new tmpuname[128];
new hasmultiple=-1;
if(partofname)
{
for (i=0;i<MAX_PLAYERS;i++)
{
if (IsPlayerConnected(i))
{
GetPlayerName(i,tmpuname,sizeof(tmpuname));
if(!strfind(tmpuname,playername1[partofname],true, 0))
{
hasmultiple++;
correctsigns_userid=i;
}
if (hasmultiple>0)
{
return -2;
}
}
}
}
return correctsigns_userid;
}
Respuesta: Duda -
iKeN - 14.07.2012
No se necesita crear un timer solo chequear si el npc a sido desconectado.
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
if( !reason && IsPlayerNPC(playerid) )
{
ConnectNPC("Bot", "recScript");
}
return 1;
}