Szerző Téma: Dm_Zone  (Megtekintve 442 alkalommal)

Dm_Zone
« Dátum: 2012. november 03. - 17:26:11 »
0 Show voters
Már korábban is volt ilyen problémám most megint elõjött és nem tudom megoldodani :(
Szóval itt van ez a script egy dm zóna. Csak a módban lévõ parancsokat tiltja le ami külön scriptbe van azt engedélyezi de miértt ??? :O És mikor meghalok kirak kezdõhelyen nem pedig a dm zónában helyez el
 
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
static dmid[MAX_PLAYERS]={ -1, ... };
#define COLOR_RED 0xE60000FF
#define DM 391
#pragma tabsize 0
 
 
public OnPlayerConnect(playerid)
{
   dmid[playerid] = -1;
   return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
   switch(dmid[playerid])
   {
       case 0: // 0-ás azonosítószámú dm zónához tartozó tevékenységek
       {
           SetPlayerPos(playerid,0.0,0.0,3.5); // Elhelyezés a dMben. Itt akár véletlenszeru spawnot is írhatunk, de az átláthatóság kedvéért maradjunk ennél
           SetPlayerFacingAngle(playerid,90.0); // Játékos írányba állítása; elforgatás
         ResetPlayerWeapons(playerid); // fegyverek elvétele <- FONTOS
         GivePlayerWeapon(playerid,4,1); // Felfegyverzés
         GivePlayerWeapon(playerid,34,10); // Felfegyverzés
         SetPlayerVirtualWorld(playerid,dmid[playerid]); // áthelyezés mási VW-be
      }
        case 1: // 1-es azonosítószámú dm zónához tartozó tevékenységek
       {
           SetPlayerPos(playerid,-1379.3,428.2,30.0); // Elhelyezés a dMben. Itt akár véletlenszeru spawnot is írhatunk, de az átláthatóság kedvéért maradjunk ennél
           SetPlayerFacingAngle(playerid,180.0); // Játékos írányba állítása; elforgatás
         ResetPlayerWeapons(playerid); // fegyverek elvétele <- FONTOS
         GivePlayerWeapon(playerid,24,100); // Felfegyverzés
         GivePlayerWeapon(playerid,34,10); // Felfegyverzés
         SetPlayerVirtualWorld(playerid,dmid[playerid]); // áthelyezés mási VW-be
      }
         case 2: // 2-es azonosítószámú dm zónához tartozó tevékenységek
       {
           SetPlayerPos(playerid,1379.3,-28.2,30.0); // Elhelyezés a dMben. Itt akár véletlenszeru spawnot is írhatunk, de az átláthatóság kedvéért maradjunk ennél
           SetPlayerFacingAngle(playerid,110.0); // Játékos írányba állítása; elforgatás
         ResetPlayerWeapons(playerid); // fegyverek elvétele <- FONTOS
         GivePlayerWeapon(playerid,20,100); // Felfegyverzés
         GivePlayerWeapon(playerid,32,10); // Felfegyverzés
         SetPlayerVirtualWorld(playerid,dmid[playerid]); // áthelyezés mási VW-be
      }
      default: // Alap spawn funkciók. Amikor a játékos NINCS DM-BEN ÉS ÚGY SPAWNOL
      {// Ide kell írni ami alap ból az OnPlayerSpawnnál volt
          GivePlayerMoney(playerid,100);
          GivePlayerWeapon(playerid,1,1);
          SetPlayerVirtualWorld(playerid,0); // Vissz*rakás az alap VW-be FONTOS
      }
   }
   return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
 
      if (strcmp(\"/exitdm\", cmdtext, true) == 0)
   {
        if(dmid[playerid] == -1) return SendClientMessage(playerid,COLOR_RED, \"A parancs használatához elobb lépj be egy DM zónába!\");
      dmid[playerid] = -1;
      SpawnPlayer(playerid);
      return SendClientMessage(playerid,COLOR_RED,\"Kiléptél a DeathMatch zónából.\");
   }else if(dmid[playerid] != -1) return SendClientMessage(playerid,COLOR_RED,\"Elöbb lépj ki a dmbol\");
 
   if (strcmp(\"/dmparancs\", cmdtext, true) == 0)
   {
      dmid[playerid] = 0; // Azonosítószám megadása FONTOS
       SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,COLOR_RED,\"Csatlakoztál a xXX DM -hez\");
      return 1;
   }
   if (strcmp(\"/dmparancs2\", cmdtext, true) == 0)
   {
      dmid[playerid] = 1; // Azonosítószám megadása FONTOS
       SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,COLOR_RED,\"Csatlakoztál a xXXx DM -hez\");
      return 1;
   }
   if (strcmp(\"/dmparancs3\", cmdtext, true) == 0)
   {
      dmid[playerid] = 2; // Azonosítószám megadása FONTOS
       SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,COLOR_RED,\"Csatlakoztál a xXYXx DM -hez\");
      return 1;
   }
return 0;
}
« Utoljára szerkesztve: 2012. november 03. - 17:41:49 írta ninjo98 »

Dm_Zone
« Válasz #1 Dátum: 2012. november 03. - 18:28:22 »
+1 Show voters
Az OnPlayerCommandText meghívási sorrendje miatt.
Példaként tegyük fel van egy mód és 4 filterscript melyben mindegyikben használod az OnPlayerCommandText-et.
Ezt a sa-mp egy ciklus segítségével sorban meghívja, vagyis 5 darab ilyen visszahívás rész van a futó szerveredben, és nem olvassza õket egybe.
Tehát elsõnek meghívásra kerül a legelsõnek betöltõtt filterscriptben lévõ OnPlayerCommandText (továbbiakban OPCT).
Majd a második filterscript OPCT.
A harmadik és majd a negyedik filterscriptben lévõ OPCT.
És legutoljára a mód OPCT-je.
Ebbõl látszik hogy ha le szeretnéd tíltani a többi létrehozott parancsot, akkor a legelsõnek betöltõtt filterscriptben kell megtenned minden ilyesmi dolgot.
server.cfg   filterscript elsõfs
Ezért szokták azt javasolni hogy egy adminsztrációs szkriptet, legelsõnek kell beolvastatni egy samp szervernél.
« Utoljára szerkesztve: 2012. november 04. - 00:08:40 írta ɐʞzssǝlosz »

Dm_Zone
« Válasz #2 Dátum: 2012. november 03. - 18:56:07 »
0 Show voters
Köszönöm ez bejött :)
És azt hogy mikor a dm zónában meghalok addig ott spawnoljon még ottvagyok azt hogy lehetne megoldani??

Dupla hozzászólás automatikusan összefûzve. ( 2012. november 03. - 20:37:32 )

PVar -al meglehetne oldani?
« Utoljára szerkesztve: 2012. november 03. - 20:37:32 írta ninjo98 »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal