Jump to content
  • 0

pomoc Teamy


TeeZee

Dotaz

Popis problému:

Ahojte, začal som robiť mód a narazil som na problém.

Budem robiť gangy a zamestnania, a potreboval by som spraviť to tak, keď hráč bude mať rovnaký gang alebo zamestnanie, nebudú sa môcť zabíjať.

new grove[MAX_PLAYERS];
new gangmember[MAX_PLAYERS];
Budem to mať cez pickup, ale iba na ukážku ->

 

#include 

cmd:joingang(playerid, params[])
{

    if(grove[playerid]==1) return SendClientMessage(playerid,-1,"{FF0000}[  {FFFFFF}! {FF0000} ]{cc0033} Už si v tomto gangu");
    if(gangmember[playerid]==1) return SendClientMessage(playerid,-1,"{FF0000}[  {FFFFFF}! {FF0000} ]{cc0033} Už si v nejakom gangu");

    SendClientMessage(playerid,0xFFFFFFFFFF,"{FF0000}[  {FFFFFF}! {FF0000} ]{cc0033} Pripojil si sa do Gangu Grove");
    grove[playerid] = 1;
    gangmember[playerid] = 1;

return 1;
}

cmd:opustitgang(playerid, params[])
{

if(gangmember[playerid]!=1) return SendClientMessage(playerid,-1,"{FF0000}[  {FFFFFF}! {FF0000} ]{cc0033} Nie si v žiadnom gangu");

    SendClientMessage(playerid,0xFFFFFFFFFF,"{FF0000}[  {FFFFFF}! {FF0000} ]{cc0033} Opustil si gang Grove");
    grove[playerid] = 0;
    gangmember[playerid] = 0;

return 1;
}

Samozrejme je to len na ukážku, budem to mať cez pickup a trošku ináč. Ale základ poznáte.

No a teraz ako mám spraviť, aby sa hráči s teamom "grove[playerid] = 1;" nemohli zabíjať ?

 

Chyby/varování kompilátoru a při běhu:

--

 

Kód:

 

--

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

12 odpovědí na tuto otázku

Recommended Posts

  • 0

Dobre, a každé to zamestnanie a gang pridelím vlastné teamid ?

Napr -> 

cmd:joingang(playerid, params[])
{

if(grove[playerid]==1) return SendClientMessage(playerid,-1,"{FF0000}[ {FFFFFF}! {FF0000} ]{cc0033} Už si v tomto gangu");
if(gangmember[playerid]==1) return SendClientMessage(playerid,-1,"{FF0000}[ {FFFFFF}! {FF0000} ]{cc0033} Už si v nejakom gangu");

SendClientMessage(playerid,0xFFFFFFFFFF,"{FF0000}[ {FFFFFF}! {FF0000} ]{cc0033} Pripojil si sa do Gangu Grove");
SetPlayerTeam(playerid, 1);
grove[playerid] = 1;
gangmember[playerid] = 1;

return 1;
}

cmd:opustitgang(playerid, params[])
{

if(gangmember[playerid]!=1) return SendClientMessage(playerid,-1,"{FF0000}[ {FFFFFF}! {FF0000} ]{cc0033} Nie si v žiadnom gangu");

SendClientMessage(playerid,0xFFFFFFFFFF,"{FF0000}[ {FFFFFF}! {FF0000} ]{cc0033} Opustil si gang Grove");
SetPlayerTeam(playerid, 0);
grove[playerid] = 0;
gangmember[playerid] = 0;

return 1;
}

Zabráni to aj hit, alebo mu to ostane na 1hp ?

Edited by TeeZee
Link to comment
Share on other sites

  • 0
  • Globální moderátor

Možná taková rada do budoucnosti, s rostoucím počtem zaměstnání budeš mít hrozně moc proměnných. Jelikož se jedná o homogenní informaci, je lepší si tuto informaci zachovávat pouze v jedné proměnné, tzn:

gang[playerid] = 1; // 1 jako grove
SetPlayerTeam(playerid,1);

gang[playerid] = 2; // 2 jako ballas (?atd)
SetPlayerTeam(playerid,2);

pak zjišťovat 

if(gang[playerid] != 0) return SendClientMessage(playerid,-1,"Už jsi v nějakém gangu!");
if(gang[playerid] == 1) return SendClientMessage(playerid,-1,"Už jsi v tomto gangu!");

if(gang[playerid] == 0) return SendClientMessage(playerid,-1,"Nejsi v žádném gangu!");

---

 

 

 

 

 

Ještě lepší je si vytvořit tzv. enum (enumerated type)

enum GANGZ {
GROVE = 1,  // začneme jedničkou
BALLAS, // 2
DALLAS, // 3 
GANGSTA // 4
}

a pak

// přiřazování
gang[playerid] = GROVE;
gang[playerid] = BALLAS; 

// podmínky
if(gang[playerid] != 0) return SendClientMessage(playerid,-1,"Už jsi v nějakém gangu!");
if(gang[playerid] == GROVE) return SendClientMessage(playerid,-1,"Už jsi v tomto gangu!");

atd...

Link to comment
Share on other sites

  • 0

Cez enum robím, ale teraz neviem, ja ho používam takto ->

 

 

 

enum playerinfo
{
bool:Login,
admin,
vip
}

 

 

 

No a keď tam dám to = a id, teda čislo, tak to bude ako nap. pri admin systéme na levely ?

 

Takže teda napr ->

 

 

 

new gang[MAX_PLAYERS][GANGZ];

enum GANGZ {
GROVE = 1,  
BALLAS = 2
}

 

 

 

A pri použitý bude ->

gang[playerid] = 1;
gang[playerid] = 2;

a pri podmienke ->

 

 

if(gang[playerid] == 1) return SendClientMessage(playerid,-1,"Už si v grove");
if(gang[playerid] == 2) return SendClientMessage(playerid,-1,"Už si v ballas");
Edited by TeeZee
Link to comment
Share on other sites

  • 0

Pokud máš nějaký výčet hodnot(enum):

 

enum myEnum {

	bool: myBool,
	Float: myFloat,
	myInt
}
tak ho vložíš do pole:

new myVar[myEnum];
Teď máš proměnnou se strukturou, která obsahuje 3 informace(0 = bool, 1 = float, 2 = int), jednoduše řečeno, máš "3" proměnné myVar se 3 datovými typy. Použití je snadné a to, že do pole napíšeš jméno dané informace ve struktuře, například:

 

myVar[myInt] = GetPlayerMoney(playerid);
Právě proměnná obsahuje počet peněz, které má u sebe hráč, a manipulace je snadná:

 

if (myVar[myInt] < 3000) return SCM(playerid, -1, "Máš u sebe méně, než 3000$");
Tolik k enumu. Ještě jedna rada, a to, že pokud máš nějakou řadovou hodnotu (1, 2, 3...) stačí jí přiřadit 1. informaci:

 

 

 

 

enum { 

	NIC = 0,
	GROVE, // = 1  
	BALLAS, // = 2
	VAGOS, // = 3
	AZTECAS // = 4
}

gang[playerid] = GROVE;
Edited by Ernst Remer
Link to comment
Share on other sites

  • 0

Dobre ďakujem, síce to mám trošku inak, ale moc sa to nelíši. Ďakujem za pomoc. Mám to takto ->

 

enum GANGZ
{
GROVE,
BALLAS
}

new gang[MAX_PLAYERS][GANGZ];

A pri použitý to mám ->

gang[playerid][GROVE] = 1;
gang[playerid][BALLAS] = 1;
Edited by TeeZee
Link to comment
Share on other sites

  • 0
  • Globální moderátor

No blbě jsme se asi pochopili, každopádně sis tím moc nevyřešil (problém s homogenitou) icon_e_biggrin.gif

 

furt se může stát, že jeden hráč bude mít 1 jak GROVE tak i BALLAS. Ale nechme to tak být, dokud ti to vyhovuje ten tvůj způsob, neberu ti ho

Link to comment
Share on other sites

  • 0

Můžu si otevřít dialog dvakrát a mít tak dvě zaměstnání.

 

Jde hlavně o to, že si to děláš složitější. Na n zaměstnání máš n proměnných, přičemž stačí jedna. S jednou proměnnou se pak lépe pracuje a dále rozšiřuje skript o další zaměstnání.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...