#1

їComo puedo hacer que cuando un NPC crashee acceda inmediatamente?
їPor que crashean los npcs?
Reply
#2

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;
Reply
#3

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
Reply
#4

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;
}
Reply
#5

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)