Szerző Téma: NPC Utolsó IDkre  (Megtekintve 1750 alkalommal)

NPC Utolsó IDkre
« Dátum: 2009. December 06. - 17:46:22 »
0 Show voters
Ezzel a kóddal meg lehet akadályozni, hogy az NPC-k az elso ID-ket foglalják le, így leghátulra rak minden npc-t.
 
#define MAX_LASTNPC 1 //MAX 100 NPC
forward KickTime();
forward NPCLoadUpdate();
new maxplcheck;

 
Ezzel állítsuk be hogy hány NPC-t rakunk be a szerverbe, a maxplcheck meg a maxplayers-et ellenorzi, amit a server.cfg-be írtunk.
A 100 azért a maximum, mert több veszélyes lehet.
 
public NPCLoadUpdate()
{
ConnectNPC...
return 1;
}
public OnFilterScriptInit()
{
    SlotNPC();
return 1;
}

 
Az NPCLoadUpdateba kell megadni azokat az NPC-ket amiket a szerverre akarunk küldeni.
 
stock SlotNPC()
{
    maxplcheck = GetServerVarAsInt(\"maxplayers\");
for(new i = 0; i <= maxplcheck-1-MAX_LASTNPC; i++)
{
new str[64];
format(str,sizeof(str),\"xyz%d,i);
ConnectNPC(str,\"npcidle\");
}
SetTimer(\"NPCLoadUpdate\",1000,0);
SetTimer(\"KickTime\",2000,0);
return 1;
}
public KickTime()
{
    maxplcheck = GetServerVarAsInt(\"maxplayers\");
for(new i = 0; i <= maxplcheck-1-MAX_LASTNPC; i++)
{
Kick(i);
}
}

 
A SlotNPC függvény arra van, hogy felküldjön a szerverre xy darab npc-t és utána egy timerrel külön felküldi a sajátjainkat.
A második timer meg a maxplayersbol kivonja a megadott npc-ink számát, így csak a slot tölto botokat kickeli ki.
Hátránya: hogy kicsit induláskor belaggolhat a szerver mikor küld fel NPC-t és kickeli ki oket.
Szerk:Formattal van mostmár megoldva a sok NPC név
« Utoljára szerkesztve: 2011. November 22. - 19:49:40 írta APC »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
NPC Utolsó IDkre
« Válasz #1 Dátum: 2009. December 06. - 18:44:41 »
0 Show voters
Én így oldanám meg:
 
e_ConnectNPC(const name[], const script[],destid)
{
    new ename[24;
for( new i = 0; i < destid-1; i++)
{
    if(IsPlayerConnected(i)) continue;
        format(ename,24,\"_[_[%d]_]_\",i);
    ConnectNPC(ename,script);
    SetPlayerPos(i,0,0,GetPos(i,3)+54545*4545454545);
}
ConnectNPC(name,script);
for( new i = 0; i < destid-1; i++) if(IsPlayerNPC(i))
    {
        format(ename,24,\"_[_[%d]_]_\",i);
if(!strcmp(GET_PLAYER_NAME(i),ename,true)) Kick(i);
}
return 1;
}

 
GET_PLAYER_NAME és GetPos függvényem szükséges!
Epsilon

BencEE

  • Vendég
NPC Utolsó IDkre
« Válasz #2 Dátum: 2009. December 07. - 12:19:45 »
0 Show voters
Jó lett.

Nem elérhető Maci_

  • 220
    • Profil megtekintése
NPC Utolsó IDkre
« Válasz #3 Dátum: 2010. Február 16. - 16:44:43 »
0 Show voters
ez csak egy kiss dolog de mégis jól jön

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal