- Å ARAS

Komanda [ /darbas ] pritaikyta visiems darbams!

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

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

Ten kur funkcija InfoBoxForPlayer, tai neveiks ant bet kokio gm, jei nebus sukurtos tos funkcijos, nes tai nestandartinė funkcija.

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

Ten kur funkcija InfoBoxForPlayer, tai neveiks ant bet kokio gm, jei nebus sukurtos tos funkcijos, nes tai nestandartinė funkcija.

Tuoj pakeisiu į SendClientMessage

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
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

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
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_

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
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.

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

Ačiū, kad dalinies. Ši pamoka man pravertė ir ją naudoju savajame serveryje. :)

+REP

ir tuo pačiu sau 5 +rep užsidėjo. :D

Redaguota , nario Rocky'

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį
Svečias
Ši tema yra užrakinta.

  • Å iame puslapyje narÅ¡o:   0 nariai

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


  • SuperGames programele
  • SuperGames programele