Szerző Téma: [ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]  (Megtekintve 16741 alkalommal)

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Dátum: 2010. Március 20. - 19:32:47 »
+13
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
« Utoljára szerkesztve: 2011. Április 18. - 17:20:34 írta Epsilon »

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #1 Dátum: 2010. Március 20. - 20:38:12 »
+1
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.
« Utoljára szerkesztve: 2010. Május 26. - 13:44:06 írta kurta999 »

[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #2 Dátum: 2010. Március 20. - 22:26:54 »
0

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #3 Dátum: 2010. Március 20. - 22:28:01 »
0
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

[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #4 Dátum: 2010. Március 29. - 20:48:23 »
0
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\"
« Utoljára szerkesztve: 2010. Március 29. - 20:51:27 írta kriszrap »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #5 Dátum: 2010. Március 31. - 19:02:27 »
0
A példákban elírásokat találtam próbáld most.

[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #6 Dátum: 2010. Március 31. - 20:59:54 »
0
Hasznos kis tut  :)

[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #7 Dátum: 2010. Április 01. - 11:26:35 »
0
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
« Utoljára szerkesztve: 2010. Április 01. - 11:44:04 írta kriszrap »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #8 Dátum: 2010. Április 01. - 14:11:19 »
0
Köszönöm, a hibák jelzését. Korrigáltam a leírást.

Nem elérhető BeNiBoY

  • 1342
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #9 Dátum: 2010. Május 25. - 19:09:29 »
0
925  if (strcmp(\"/rocket-dm\", cmdtext, true) == 0)[/quote]
 
C:\\Program Files\\Rockstar Games\\Szerver2\\gamemodes\\lvdm2.pwn(925) : warning 225: unreachable code[/quote]

Nem elérhető krisk

  • 2380
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #10 Dátum: 2010. Május 26. - 13:37:33 »
0
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.

Nem elérhető BeNiBoY

  • 1342
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #11 Dátum: 2010. Május 26. - 13:52:47 »
0
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]
 ???

Nem elérhető krisk

  • 2380
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #12 Dátum: 2010. Május 27. - 16:15:32 »
0
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.

[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #13 Dátum: 2010. Május 31. - 01:41:35 »
0
Hello
Nagyon jó lett de van 1 gondom!
Azt hogy csináljam meg hogy a filterscriptek parancsait is tiltsa le?

Nem elérhető Lömpi

  • 1257
    • Profil megtekintése
[ Leírás ] DM zóna készítése [SPAWN, /EXITDM, EGYSZERU]
« Válasz #14 Dátum: 2010. Május 31. - 06:50:14 »
+1
ha fs-be van irva csak akkor lehet ..na meg ha ez inc lenne :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal