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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Tanuljunk PAWN nyelvet => A témát indította: Epsilon - 2010. Március 20. - 19:32:47

Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2010. Március 20. - 19:32:47
Utoljára szerkesztve: 11/04/18






Tudom hogy már van egy ilyen leírás a fórumon viszont a hawernak szüksége van egy másfelé kinyúló leírásra, ezenkívül pedig a Csabesz által leírt módnál ezerszer egyszerubb lehetoségek is vannak, amikor ugyanolyan közérthetok.
Eloször is szükségünk lesz egy változóra amibol minden játékoshoz tartozik egy cella.
A deklaráció mellett gondoskodunk róla, hogy ez alapból mindenkinél -1 legyen.
 
static dmid[MAX_PLAYERS]={ -1, ... };

 
Ezenkívül a hibák elkerülése végett felcsatlakozáskor a játékos azonosítószámához tartozó cellát szintén \'ürítjük\'
 
public OnPlayerConnect(playerid)
{
   dmid[playerid] = -1;
   return 1;
}

 
Ezután már tudunk dolgozni a változóval a következoképp;
Eloször is eldöntjük hogy melyik DM-nek melyik lesz az azonosítószáma. (Nem ajánlom a definálást x)
Ezután pedig az OnPlayerSpawn eljárásnál rendezetten ellátjuk a különbözo DM-ekhez kapcsolódó feladatokat.
 
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;
}

 
Ha így elintéztünk minden DM-zónát akkor már megkönnyebbülhetünk mert innentol már egyszeru a dolgunk.
Menjünk az OnPlayerCommandText eljáráshoz és pötyögjük oda a következot. Ez legyen az elso parancs:
 
   if (strcmp(\"/exitdm\", cmdtext, true) == 0)
   {
        if(dmid[playerid] == -1) return SendClientMessage(playerid,SZÍN, \"A parancs használatához elobb lépj be egy DM zónába!\");
      dmid[playerid] = -1;
      SpawnPlayer(playerid);
      return SendClientMessage(playerid,SZÍN,\"Kiléptél a DeathMatch zónából.\");
   }else if(dmid[playerid] != -1) return SendClientMessage(playerid,SZÍN,\"Elöbb lépj ki a dmbol\");

 
Most pedig írjuk meg a három DM-be csatlakozó parancsot.
 
   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,SZÍN,\"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,SZÍN,\"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,SZÍN,\"Csatlakoztál a xXYXx DM -hez\");
      return 1;
   }

 
Remélem ezen hármas példa elemezgetésével ti is rájöttök, hogyan kell DM zónákat készíteni.
Amennyiben nem kérdezzetek.
Amit készítettünk:
A játékosok csatlakozhatnak különbözo dm zónákba.

A játékosok nem használhatnak más parancsokat míg nem hagyják el a dm zónát.


a játékosok a dm zónában kezdenek mindaddig míg el nem hagyják azt.


a játékosok nem látják a dmben lévo játékosokat

 

Epsilon
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kurta999 - 2010. Március 20. - 20:38:12
Szép leírás és hasznos is. Ezt én is pontosan ugyanígy csinálom azzal a külömbséggel, hogy nem a cmdtext tetejére írom a parnacs letiltót.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Gamestar - 2010. Március 20. - 22:26:54
Jó, http://users.atw.hu/hun-sa-mp-forum/index.php?topic=3911.0, írhatna ezzel is valaki;)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Csabesz - 2010. Március 20. - 22:28:01
Idézetet írta: Gamestar date=1269120414\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Jó, http://users.atw.hu/hun-sa-mp-forum/index.php?topic=3911.0, írhatna ezzel is valaki;)
 
Mondjuk Te ?  :D
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kriszrap - 2010. Március 29. - 20:48:23
nekem iylenekt ír
 

H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(327) : error 001: expected token: \";\", but found \"}\"
H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(334) : error 001: expected token: \";\", but found \"}\"
H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(341) : error 001: expected token: \";\", but found \"}\"
H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(460) : error 017: undefined symbol \"playeid\"
H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(469) : error 017: undefined symbol \"playeid\"
H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(478) : error 017: undefined symbol \"playeid\"
H:\\sa-mp\\szerver\\gamemodes\\lvdm.pwn(484) : error 017: undefined symbol \"playeid\"
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2010. Március 31. - 19:02:27
A példákban elírásokat találtam próbáld most.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: [M]D[S]Rotary - 2010. Március 31. - 20:59:54
Hasznos kis tut  :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kriszrap - 2010. Április 01. - 11:26:35
ja és le hagytad a parancsonál a return 1; nél ezt ; meg hogy csatlakosztál ott pediga szint igy pedig jó nekem csak még egy hiba ha kilépek dm bol akkor is ugyan oda rak ha be irom hogy /kill és ugyan abba virtualdwolrdbe vagyaok
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2010. Április 01. - 14:11:19
Köszönöm, a hibák jelzését. Korrigáltam a leírást.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: BeNiBoY - 2010. Május 25. - 19:09:29
925  if (strcmp(\"/rocket-dm\", cmdtext, true) == 0)[/quote]
 
C:\\Program Files\\Rockstar Games\\Szerver2\\gamemodes\\lvdm2.pwn(925) : warning 225: unreachable code[/quote]
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: krisk - 2010. Május 26. - 13:37:33
Több mint valószínu hogy a parancsod végén vagy nincs return 1;, vagy valamelyik függvény amit meghívtál nem hívódhat meg.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: BeNiBoY - 2010. Május 26. - 13:52:47
Idézetet írta: krisk date=1274873853\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Több mint valószínu hogy a parancsod végén vagy nincs return 1;
 
van return1;
 

 vagy valamelyik függvény amit meghívtál nem hívódhat meg.
 
[/quote]
 ???
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: krisk - 2010. Május 27. - 16:15:32
Pl:
 
public OnPlayerSpawn(playerid) {
if(1 == 1) return printf(\"Ez tuti meghivodik\");
else return printf(\"Erre viszont wanringot ir. Hogy nem lehet 1 ugyan az mint 1\");
return 1;
}

 
de a warningokkal is futni fog a scripted.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: hunpeesta - 2010. Május 31. - 01:41:35
Hello
Nagyon jó lett de van 1 gondom!
Azt hogy csináljam meg hogy a filterscriptek parancsait is tiltsa le?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Lömpi - 2010. Május 31. - 06:50:14
ha fs-be van irva csak akkor lehet ..na meg ha ez inc lenne :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: hunpeesta - 2010. Május 31. - 12:47:52
Értem
Kössz
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Kovi - 2010. Július 16. - 10:01:21
Hali!
Lehet nagyon hülye kérdésem van,de pawnozás nem az erosségem.A legelso sort azt a staticosat hova kell beilleszteni?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kurta999 - 2010. Július 16. - 10:04:54
A GM tetejére, ugyanúgy mint a new -okat.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Kovi - 2010. Július 16. - 10:19:53
thx.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: pocc26 - 2011. Január 15. - 22:23:38
Segítettél! Kösz!
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Január 17. - 18:01:28
Örülök, hogy segíthettem.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Stricica - 2011. Január 17. - 20:54:12
Ó thx, amikor másképp oldottam meg az egész bebugolt és kicrashelt :D Nagy segítég volt  ;)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Február 19. - 20:41:08
Sikerült megcsinálni ,kösz,de van egy kis bukkanó!A teleportokat meg az autó spawnolást még mindig engedi a DM zónában!
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Február 19. - 21:07:35
Idézetet írta: Stricica date=1295294052\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Ó thx, amikor másképp oldottam meg az egész bebugolt és kicrashelt :D Nagy segítég volt  ;)
 


Örülök, hogy segíthettem.
 
[/quote]
A telepotokat és az autospawnert a játékmódnak kell tartalmaznia.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Február 20. - 12:21:31
A teleportokat a játékmód tartalmazza
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Február 20. - 18:38:35
És, a javasolt helyen vannak?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: ChuckNorris - 2011. Február 20. - 18:48:22
Ezt inkább átrakom a tanulós részbe  :D
Nagyon hasznos  :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Február 25. - 14:36:10
Idézetet írta: Epsilon date=1298223515\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
És, a javasolt helyen vannak?
 
Igen,a javasolt helyen vannak, oda raktam mindent ahova kell!
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Február 25. - 15:39:08
Ezek szerint az \'/exitdm\' parancs az összes többi parancsod felett van? (legalábbis a  teleportok felett)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Február 25. - 15:44:28
Idézetet írta: Epsilon date=1298644748\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Ezek szerint az \'/exitdm\' parancs az összes többi parancsod felett van? (legalábbis a  teleportok felett)
 
Igen,alá kelett volna rakni?  :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Február 25. - 16:30:26
Nem.
Szervered használ filterszkripteket?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Február 25. - 16:34:10
Idézetet írta: Epsilon date=1298647826\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Nem.
Szervered használ filterszkripteket?
 
Igen használ,köszi de már megvan,igazából evvel segítettél a legjobban:
 

Ezek szerint az \'/exitdm\' parancs az összes többi parancsod felett van? (legalábbis a  teleportok felett)
 
[/quote]
Köszi! ;)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Február 25. - 17:01:01
Nincs mit.  ;)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Mitsubishi_Lancer - 2011. Április 17. - 09:17:51
Nekem 1 errort ír.
...(94) : error 030: compound statement not closed at the end of file (started at line 64)
És a 64-es sor:
if (strcmp(\"/exitdm\", cmdtext, true) == 0)
{
        if(dmid[playerid] == -1) return SendClientMessage(playerid,0xbc0000, \"A parancs használatához elobb lépj be egy DM zónába!\");
   dmid[playerid] = -1;
   SpawnPlayer(playerid);
   return SendClientMessage(playerid,0xbc0000,\"Kiléptél a DeathMatch zónából.\");
}else if(dmid[playerid] != -1) return SendClientMessage(playerid,0xbc0000,\"Elöbb lépj ki a dm-bõl!\");
Return 1; -et is próbáltam a parancs végére rakni, de így meg 7 error xd
Valaki leírná hogy mit tegyek? pls
Akár az is jó ha linkeltek egy kész dm zónát
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Április 17. - 09:43:09
Ha a hiba a 94-es sorban van miért a 64-eset másoltad be?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: DrAkE - 2011. Április 17. - 09:49:05
Alapból egy kérdés felvetõtödd bennem:
 
else if(dmid[playerid] != -1) return SendClientMessage(playerid,0xbc0000,\"Elöbb lépj ki a dm-bõl!\");

 
Ez minek a végére? Az exitdmnek pont az a lényege ha a változó értéke nem -1 akkor DMbõl ki tud lépni.
2 lehetséges út van: vagy bent van a DMben vagy nincs. Ha nincs bent akkor bekell lépnie, ha bent van kitud lépni, de azt hogy csinálja hogy \"Elõbb lépj ki a dm-bõl!\"? :D
Ez a sor szerintem felesleges.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Április 17. - 10:02:17
Idézetet írta: DrAkE date=1303026545\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Alapból egy kérdés felvetõtödd bennem:
 
else if(dmid[playerid] != -1) return SendClientMessage(playerid,0xbc0000,\"Elöbb lépj ki a dm-bõl!\");

 
Ez minek a végére? Az exitdmnek pont az a lényege ha a változó értéke nem -1 akkor DMbõl ki tud lépni.
2 lehetséges út van: vagy bent van a DMben vagy nincs. Ha nincs bent akkor bekell lépnie, ha bent van kitud lépni, de azt hogy csinálja hogy \"Elõbb lépj ki a dm-bõl!\"? :D
Ez a sor szerintem felesleges.
 


Nem.

Félreértelmezted az feltételeket.
Ha azt írta be, hogy \"/exitdm\" akkor lefut a parancs, ha pedig mást, akkor kiírja, hogy elõbb lépj ki a DM-bõl.
 

Amit készítettünk:
A játékosok nem használhatnak más parancsokat míg nem hagyják el a dm zónát.
 
[/quote]
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Mitsubishi_Lancer - 2011. Április 18. - 15:49:43
Idézetet írta: Epsilon date=1303026189\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Ha a hiba a 94-es sorban van miért a 64-eset másoltad be?
 
MERT 94-es sor NINCS xD
Lehet én baxtam el. Itt van, lehet ebbe van a hiba, ha láttok hibát plz iríátok le!
 
#define FILTERSCRIPT
#include <a_samp>
static dmid[MAX_PLAYERS]={ -1};
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" DM zóna\");
print(\" Készítõ: Lancer\");
print(\" Ez alapján:\");
print(\" http://sampforum.hu/index.php?topic=3967.0\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
dmid[playerid] = -1;
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,0xbc0000, \"A parancs használatához elobb lépj be egy DM zónába!\");
dmid[playerid] = -1;
SpawnPlayer(playerid);
return SendClientMessage(playerid,0xbc0000,\"Kiléptél a DeathMatch zónából.\");
}else if(dmid[playerid] != -1) return SendClientMessage(playerid,0xbc0000,\"Elöbb lépj ki a dm-bõl!\");
if (strcmp(\"/dm1\", cmdtext, true) == 0)
{
dmid[playerid] = 0; // Azonosítószám megadása FONTOS
    SpawnPlayer(playerid); // Játékos lespawnolása
SendClientMessage(playerid,0xbc0000,\"Ez még csak egy teszt parancs.\");
return 1;
}
if (strcmp(\"/dm2\", cmdtext, true) == 0)
{
dmid[playerid] = 1; // Azonosítószám megadása FONTOS
    SpawnPlayer(playerid); // Játékos lespawnolása
SendClientMessage(playerid,0xbc0000,\"Ez még csak egy teszt parancs.\");
return 1;
}
if (strcmp(\"/dm3\", cmdtext, true) == 0)
{
dmid[playerid] = 2; // Azonosítószám megadása FONTOS
    SpawnPlayer(playerid); // Játékos lespawnolása
SendClientMessage(playerid,0xbc0000,\"Ez még csak egy teszt parancs.\");
return 1;
}
return 0;
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: NagyZ - 2011. Április 18. - 16:27:19
#define FILTERSCRIPT
#include <a_samp>
#pragma tabsize 0
static dmid[MAX_PLAYERS]={ -1};
public OnFilterScriptInit()
{
   print(\"\\n--------------------------------------\");
   print(\" DM zóna\");
   print(\" Készítõ: Lancer\");
   print(\" Ez alapján:\");
   print(\" http://sampforum.hu/index.php?topic=3967.0\");
   print(\"--------------------------------------\\n\");
   return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
   dmid[playerid] = -1;
   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,0xbc0000, \"A parancs használatához elobb lépj be egy DM zónába!\");
      dmid[playerid] = -1;
      SpawnPlayer(playerid);
      return SendClientMessage(playerid,0xbc0000,\"Kiléptél a DeathMatch zónából.\");
   }else if(dmid[playerid] != -1) return SendClientMessage(playerid,0xbc0000,\"Elöbb lépj ki a dm-bõl!\");
if (strcmp(\"/dm1\", cmdtext, true) == 0)
   {
      dmid[playerid] = 0; // Azonosítószám megadása FONTOS
       SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,0xbc0000,\"Ez még csak egy teszt parancs.\");
      return 1;
   }
if (strcmp(\"/dm2\", cmdtext, true) == 0)
   {
      dmid[playerid] = 1; // Azonosítószám megadása FONTOS
       SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,0xbc0000,\"Ez még csak egy teszt parancs.\");
      return 1;
   }
if (strcmp(\"/dm3\", cmdtext, true) == 0)
   {
      dmid[playerid] = 2; // Azonosítószám megadása FONTOS
       SpawnPlayer(playerid); // Játékos lespawnolása
      SendClientMessage(playerid,0xbc0000,\"Ez még csak egy teszt parancs.\");
      return 1;
}
return 0;
}

 
Tessék, elvileg jó :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Április 18. - 17:25:11
Frissítve!
Korrigáltam egy - a leírás elkészültekor észre nem vett - dolgot, mégpedig azt, hogy:
Nem lecsatlakozáskor kell \'üríteni\', hanem felcsatlakozáskor, ugyanis szerver-újraindítás esetén nem történik lecsatlakozás. (nem hívódik meg az eljárás)
Érdemes a szkriptjeitekben is átírni, nem kötelezõ, és a fent leírtakon kívül más hátránya sincs.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Zsolesszka - 2011. Április 18. - 21:29:45
Szép leírás.
 
Idézetet írta: Epsilon date=1269109967\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
(Nem ajánlom a definálást x)
 
Ezt kifejtenéd bõvebben mire érted és miért is?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Április 23. - 10:52:48
Lásd:
#define CSIPADM1 1
#define CSIPADM2 2
#define CSIPADM3 3
#define CSIPADM4 4
#define CSIPADM5 5
#define CSIPADM6 6
#define CSIPADM7 7
Lassítják az átfordítást és feleslegesek (olyan nehéz megjegyezni pár számot?)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kurta999 - 2011. Április 23. - 11:34:27
Ilyen esetben még nem annyira nehéz, de mondjuk ha van már 15+ DM-ed, akkor más a helyzet :D
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Zsolesszka - 2011. Április 23. - 16:58:51
Azt értem hogy lassítják az átfordítást de megelõznek egy csomó hibát amit nem odafigyelés végett el lehet követni. Ezért én meg ajánlom a használatát.
Ha van CSIPAUZI dm és az már 14-es dm, szerintem egyszerûbb megjegyezni ha egy hivatkozást CSIPAUZI névre tesszük mint azt hogy dm egyenlõ-e 14-el. A pawn fordító meg ha most 100ms késõbb fordítja át akkor meg kibírom várni.
13 és 15 ezer sor közt ingázó módomat átlag 3700ms-4000ms alatt fordítja át, amiben van pár include fájl is. Szerintem ennyit igazán ki lehet bírni.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Rammstein - 2011. Április 23. - 22:20:35
hasznáát veszeem
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: hunpeesta - 2011. Szeptember 06. - 14:51:08
És igaz ha ZCMD-vel használnám akkor hasznavehetetlen?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: DrAkE - 2011. Szeptember 06. - 14:59:49
És ugyan miért ne mûködne?....
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: hunpeesta - 2011. Szeptember 06. - 15:06:17
Na ki próbáltam de ez a hiba üdvözölt:
 
********\\SAMPSZERVER\\gamemodes\\xxxxx.pwn(543) : error 010: invalid function or declaration

 
És ezt a sort hibáztatja:
 
}else if(dmid[playerid] != -1) return SendClientMessage(playerid,pirosszin,\"Elöbb lépj ki a dmbol\");

 
EDIT: PROBLÉMÁT MEGOLDOTTAM
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: BoOy - 2011. Szeptember 10. - 16:56:33
Sziasztok? hogy lehet a Virtual World-ot beállítani? Mert nemtalálom a leírásban  :-[
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Szeptember 10. - 17:42:12
[pawn]SetPlayerVirtualWorld(playerid, VirtualWolrdid);[/pawn]
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: BoOy - 2011. Szeptember 10. - 17:51:47
Odaírtam de nem tesz arra a VW-re.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: kadaradam - 2011. Szeptember 10. - 17:53:08
Hova írtad?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: BoOy - 2011. Szeptember 10. - 17:54:30
Odaírtam de nem tesz arra a VW-re  :-[
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Epsilon - 2011. Szeptember 11. - 07:57:40
Ha a leírás szerint készíted, nem kell odaraknod, mert tartalmazza.
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: JackBronson - 2011. Szeptember 25. - 16:03:18
Jó kis leirás biztos valakinek jóljön :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: TwisT3R - 2012. Február 06. - 16:32:29
Idézetet írta: hunpeesta date=1315314377\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
Na ki próbáltam de ez a hiba üdvözölt:
 
********\\SAMPSZERVER\\gamemodes\\xxxxx.pwn(543) : error 010: invalid function or declaration

 
És ezt a sort hibáztatja:
 
}else if(dmid[playerid] != -1) return SendClientMessage(playerid,pirosszin,\"Elöbb lépj ki a dmbol\");

 
EDIT: PROBLÉMÁT MEGOLDOTTAM
 
én meg nemtomezt...
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Striker - 2012. Július 06. - 12:13:28
Na ez kellet nekem köszi :)
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Spedy - 2012. Július 27. - 16:24:31
Jó lett Köszi!
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: DJтoυcн - 2012. Július 27. - 16:52:19
hasznos jó lett :D
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Katona - 2012. Július 28. - 14:22:43
nem rossz  kezdõknek  :thumbsup:
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Benny89 - 2012. Augusztus 25. - 02:56:57
Mûködik, minden fain.
RandomSpawnt, hogy lehet hozzárendelni?
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Flash - 2012. Augusztus 25. - 03:20:35
OnPlayerSpawn alatt van ugye a case 0: cuccnál ez:
SetPlayerPos(playerid,0.0,0.0,3.5);
Ez ezt írd át erre:
switch(random(5))
{
case 0: SetPlayerPos(playerid,0.0,0.0,3.5);
case 1; SetPlayerPos(playerid,0.0,0.0,3.5);
//case 2:
}
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Benny89 - 2012. Augusztus 25. - 03:51:22
Idézetet írta: Flash date=1345857635\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
OnPlayerSpawn alatt van ugye a case 0: cuccnál ez:
SetPlayerPos(playerid,0.0,0.0,3.5);
Ez ezt írd át erre:
switch(random(5))
{
case 0: SetPlayerPos(playerid,0.0,0.0,3.5);
case 1; SetPlayerPos(playerid,0.0,0.0,3.5);
//case 2:
}
 
Valamiért kifagy a pawno amikor lecompilezom.  :confused:
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: nyE - 2012. Augusztus 25. - 11:36:13
Idézetet írta: Flash date=1345857635\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1038\" data-ipsquote-contentclass=\"forums_Topic
OnPlayerSpawn alatt van ugye a case 0: cuccnál ez:
SetPlayerPos(playerid,0.0,0.0,3.5);
Ez ezt írd át erre:
switch(random(5))
{
case 0: SetPlayerPos(playerid,0.0,0.0,3.5);
case 1; SetPlayerPos(playerid,0.0,0.0,3.5);
//case 2:
}
 


public OnPlayerSpawn(playerid)
{
    switch(dmid[playerid])
    {
        case 0: // 0-ás azonosítószámú dm zónához tartozó tevékenységek
        {
            switch(random(3))
           {
               case 0: SetPlayerPos(playerid,0.0,0.0,3.5);
               case 1; SetPlayerPos(playerid,0.0,0.0,3.5);
               case 2: SetPlayerPos(playerid,0.0,0.0,3.5);
            }
            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 stb ahogy a fõpostban van
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Benny89 - 2012. Augusztus 25. - 12:15:11
Már nem fagy ki, viszont maradt 4 error.
Most vagy vak vagyok, vagy nemtudom...  ::| :D
Itt az én kódom:
 
public OnPlayerSpawn(playerid)
   {
   switch(dmid[playerid])
   {
       case 0:
       {   
         SetPlayerHealth(playerid, 100);
         SetPlayerArmour(playerid, 0);
           SetPlayerPos(playerid,1777.3622,-1774.7927,52.4688);
           SetPlayerFacingAngle(playerid,90.0);
         ResetPlayerWeapons(playerid);
         GivePlayerWeapon(playerid,26,1500);
         SetPlayerVirtualWorld(playerid,dmid[playerid]);
      }
        case 1:
       {   
{
   switch(random(6))
           {
      case 0: SetPlayerPos(playerid,2614.9651,2708.6431,25.8222);
      case 1: SetPlayerPos(playerid,2591.8381,2699.1733,10.8203);
      case 2: SetPlayerPos(playerid,2671.5667,2818.5789,36.3222);
      case 3: SetPlayerPos(playerid,2544.7354,2800.0752,10.8203);
      case 4: SetPlayerPos(playerid,2607.7263,2809.6113,10.8203);
      case 5: SetPlayerPos(playerid,2647.5715,2804.6311,10.8203);
            }
         SetPlayerHealth(playerid, 100);
         SetPlayerArmour(playerid, 100);
   SetPlayerFacingAngle(playerid,180.0);
         ResetPlayerWeapons(playerid);
         GivePlayerWeapon(playerid,22,1900);
         GivePlayerWeapon(playerid,25,750);
         GivePlayerWeapon(playerid,29,1650);
         GivePlayerWeapon(playerid,30,1650);
         GivePlayerWeapon(playerid,34,60);
         GivePlayerWeapon(playerid,16,5);
         SetPlayerVirtualWorld(playerid,dmid[playerid]);
      }
         case 2: //Ez az 588-as sor
       {   
       SetPlayerHealth(playerid, 50);
       SetPlayerArmour(playerid, 0);
           SetPlayerPos(playerid,2462.4910,2287.7676,91.6300);
           SetPlayerFacingAngle(playerid,110.0);
         ResetPlayerWeapons(playerid);
         GivePlayerWeapon(playerid,10,1);
         SetPlayerVirtualWorld(playerid,dmid[playerid]);
      }
      default:
      {
   SetPlayerHealth(playerid, 100);
   SetPlayerArmour(playerid, 0);
   new rand = random(sizeof(RandomSpawn));
   SetPlayerPos(playerid, RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2]);
   SetPlayerVirtualWorld(playerid, 0);
   SetPlayerInterior(playerid, 0);
   StopAudioStreamForPlayer (playerid);
      }
   }
return 1;
}

 
Hibakód:
 

SZERVER\\gamemodes\\Bworld.pwn(588) : error 014: invalid statement; not in switch
SZERVER\\gamemodes\\Bworld.pwn(588) : warning 215: expression has no effect
SZERVER\\gamemodes\\Bworld.pwn(588) : error 001: expected token: \";\", but found \":\"
SZERVER\\gamemodes\\Bworld.pwn(588) : error 029: invalid expression, assumed zero
SZERVER\\gamemodes\\Bworld.pwn(588) : fatal error 107: too many error messages on one line
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: DrAkE - 2012. Augusztus 25. - 13:51:40

case 1:
{   
{

 
Találd meg
Cím: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
Írta: Benny89 - 2012. Augusztus 25. - 16:24:45
Basszus... Jól benéztem... :D
Köszönet mindenkinek!