Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Komanda [ /darbas ] pritaikyta visiems darbams!


- ŠARAS

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3928 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, šiandien pasistengsiu jums kuo smulkiau paaiškinti kaip galime sukūrti komandą /darbas, kuri yra pritaikyta visiems darbas, todėl jums nereikės rašyti /policija, /medikai ir t.t.

Taigi pradedu:

Visų pirma, susiraskite šį callback'ą, jeigu jo nebus, tada prirašykite jį. Šis callback'as priverčia atlikti kažkokį veiksmą sukūrtai komandai.

public OnPlayerCommandPerformed(playerid, cmdtext[], success){

Toliau, po šiuo callback'u susikūriam komandą:

COMMAND:darbas(playerid, params [])

COMMAND:darbas

Sukūria jūsų nurodytą komandą (/darbas galite keisti, tik nereikia "/").

Dabar padarysim, kad ši parašius šią komandą, kažkas vyktu, taigi:

{
if(playerDB[playerid][specialybe] == 0)
{
SendClientMessage(playerid, -1, "{ff0000}Jus esate bedarbis!");
}
if(playerDB[playerid][specialybe]== 1)
{
new msg[585];
strcat(msg,"Visos tavo darbo komandos");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Tavo darbo komandos:",msg,"Gerai","");
}
if(playerDB[playerid][specialybe] == 2)
{
new msg[585];
strcat(msg,"Visos tavo darbo komandos");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Tavo darbo komandos:",msg,"Gerai","");
}
return 1;
}
}

Dabar šiek tiek paaiškinsiu funkcijas:

Ši funkcija tikrina, ar žaidėjas dirba kažkokį darbą, šiuo atveju jis nedirba, tada darom [specialybe] == 0. Ir tada nusiunčiam žaidėjui žinutę, jog jis yra bedarbis.

if(playerDB[playerid][specialybe] == 0)
{
InfoBoxForPlayer(playerid,"~r~Jus esate bedarbis!");
}

tada jeigu žaidėjas turi darbą, ir dirba policijoje (policijos specID dažniausiai būna 1), todėl jeigu žaidėjas dirba policijoje ir parašo komandą /darbas jam išmes lentelę:

if(playerDB[playerid][specialybe]== 1)
{
new msg[585];
strcat(msg,"Visos tavo darbo komandos");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Tavo darbo komandos:",msg,"Gerai","");
}

Na va, policininkui išmėtė lentelę su jo komandom, dabar einam prie medikų.

Su medikais ir kitais darbais yra tas pats, tik reikia pakeisti specID į jūsų modifikacijos visus specialybių ID.

if(playerDB[playerid][specialybe] == 2)
{
new msg[585];
strcat(msg,"Visos tavo darbo komandos");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Tavo darbo komandos:",msg,"Gerai","");
}

Dabar išmėtė visas medikų komandas.

Ir taip kopijuodami galite tęsti begalo, bet tiek darbų nėra. :D

Ką gi, štai dar kartą parodau visą kodą:

COMMAND:darbas(playerid, params [])
{
if(playerDB[playerid][darbas] == 0)
{
SendClientMessage(playerid, -1, "{ff0000}Jus esate bedarbis!");
}
if(playerDB[playerid][darbas] == 1)
{
new msg[585];
strcat(msg,"Visos tavo darbo komandos");
ShowPlayerDialog(playerid,11221,DIALOG_STYLE_MSGBOX,"Tavo darbo komandos",msg,"Gerai","");
}
if(playerDB[playerid][darbas] == 2)
{
new msg[585];
strcat(msg,"Visos tavo darbo komandos");
[center]ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Tavo darbo komandos",msg,"Gerai","");
}
return 1;
}

Pamoką kūriau aš, nežinau, vadinkit ją kaip norit pamoka/nepamoka, bet manau, kad šiek tiek padėjau. :)

Redaguota , nario Rocky'
  • Teigiamai 5
Nuoroda į komentarą
Dalintis per kitą puslapį

"Toliau, po šiuo callback'u susikūriam komandą:" Tu nori callback'e kurti komandą? :/ Ar kažko nesupratau?

Biški supainiojau, aš tai darau taip:

public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
//visokie šūdniekiai
}

ir tada po jais kūriu komandas. O čia biški susipainiojau. :D

Nuoroda į komentarą
Dalintis per kitą puslapį

Šią komandą kurk šitaip:

CMD:darbas(playerid)
{
//visas veikimas
return 1;
}

Tiesiog nenaudok params, nes tau jo neprireikia, o params prireiks kai kursi komandą kelių parametrų pvz.: "/duoti [vardas] [kiekis]" , "/get [vardas]" ir t.t. Tikiuosi supratai mane, o kalbant apie pamoką, tai ji sakyčiau ganėtinai aiški, apibendrinus visai vykusi. Tik dar kartą peržiūrėk pamoka, nes koduose rasi visokių "center" ir pravalyk kodą nuo jų. Sėkmės.

Redaguota , nario Slayer_
Nuoroda į komentarą
Dalintis per kitą puslapį

Biški supainiojau, aš tai darau taip:

public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
//visokie šūdniekiai
}

ir tada po jais kūriu komandas. O čia biški susipainiojau. :D

ZCMD komandas galim kurt bet kur tarp callbackų, tik ne pačiuose callbackuose. Ir beto pamokoje nepaminėjai, kad reikia įsidėt ZCMD include, nes kitaip mes error. Ir tada jau visas kitas komandas reiks persidaryt į ZCMD jei jos yra strcmp, arba kas norės šitą komanda persidarys į strcmp.

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3928 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...