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