GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Tomee - 2011. november 20. - 14:14:04

Cím: NPc és spawn
Írta: Tomee - 2011. november 20. - 14:14:04
1.) Az NPC-nek jobb ha külön filterscriptbe van? Vagy elég a gamemodba is? Vagy egyik sem befolyásol semmit?
2.) Mi okozhatja, hogy több játékosnál már az onplayerspawn nem akar mûködni?
3.) Valamivel lehet befolyásolni azt, hogy az NPC milyen sorrendbe loggoljanak be? Mert az IDjükre nagy szükségem van és nem jó ha keverednek.
Cím: NPc és spawn
Írta: staubka - 2011. november 20. - 14:39:14
1.) Nem lényeges szerintem.
2.) Szerintem egy ciklus hibásan vagy megírva, vagy egy timer, nemtom mivan az onplayerspawn alatt.
3.) Nemtudom hogy mûködik e, de egy próbát megér:
strcmp-vel lekéred a játékos nevét és ha a neve megegyezik egy bizonyos bot nevével akkor ezmegaz gondolom így van...
Na... A nevek alá írod a sorrendet:
playerid = 0;
playerid = 1;
stb..
Pl van 3 bot, nevük pl...
bot1 , bot2 , bot3
Azt akarod, hogy bot2 id-je 0, bot3 id-je 1, bot1 id-je pedig 2 legyen mindenképp...
Ezt elvileg úgy oldhatod meg, hogy:
[pawn]#include <a_samp>
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
    {
        new npcname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, npcname, sizeof(npcname));
        if(!strcmp(npcname, \"bot1\", true)) //ha bot1 a neve
        {
      if(IsPlayerConnected(2))/ha id 2 csatlakozva van
      {
          for(new i = 0; i < MAX_PLAYERS; i++)
          {
              if(!IsPlayerConnected(i))playerid = random(i); //véletlenszerû id-t adni a játékosnak, olyat ami nincs csatlakozva
          }
      }
      playerid = 2; //a bot id-je mostmár 2
   }
   if(!strcmp(npcname, \"bot2\", true)) //ha bot2 a neve
        {
      if(IsPlayerConnected(0))//ha id 0 csatlakozva van
      {
          for(new i = 0; i < MAX_PLAYERS; i++)
          {
              if(!IsPlayerConnected(i))playerid = random(i);//véletlenszerû id-t adni a játékosnak, olyat ami nincs csatlakozva
          }
      }
      playerid = 0; //a bot id-je mostmár 0
   }
   if(!strcmp(npcname, \"bot3\", true)) //ha bot3 a neve
        {
      if(IsPlayerConnected(1)) //ha id 1 csatlakozva van
      {
          for(new i = 0; i < MAX_PLAYERS; i++)
          {
              if(!IsPlayerConnected(i))playerid = random(i); //véletlenszerû id-t adni a játékosnak, olyat ami nincs csatlakozva
          }
      }
      playerid = 1; //a bot id-je mostmár 1
   }
    }
return 1;
}[/pawn]
Lehet hogy ez egy kurvanagy hülyeség amit írtam, de az is lehet hogy mûködik. Próbáld ki.
Cím: NPc és spawn
Írta: Dead - 2011. november 20. - 14:46:20
Megtudnád Csínálni Ennek az NPCMODES mappában lévõ részét pls mert nekem nem akar menni :S
Cím: NPc és spawn
Írta: Tomee - 2011. november 20. - 14:57:24
Staubka, sajnos nem mûködik
Cím: NPc és spawn
Írta: staubka - 2011. november 20. - 15:03:23
Amilyen sorrendben van a ConnectNPC olyan sorrendben csatlakozik... azttom ajánlani hogy lekéred az idjét:
pl...
[pawn]if(playerid != 2)Kick(2);
playerid = 2;[/pawn]
Így talán..
Cím: NPc és spawn
Írta: Tomee - 2011. november 20. - 15:34:15
Egy változóval oldottam meg, hogy new NPCID;
És amikor belép a bizonyos nevû NPc akkor NPCID=playerid;
És akkor az NPCID-t feltudom használni.
Cím: NPc és spawn
Írta: staubka - 2011. november 20. - 17:54:27
Nemtom sry :S