Pavienis.

[Pamoka][GRP]Komanda policijai: sekti

Recommended Posts

Sveiki, buvo pra┼íymas i┼í seniau padaryti toki─ů komand─ů, kurioje ┼żaid─Śjas ─»ved─Ös kito ┼żaid─Śjo nick─ů - rodyt┼│ jo buvimo pozicija kuri atsinaujina.Stengiuosi paai┼íkinti visas funkcijas, j┼│ veikim─ů.Taigi prad─Śkime:

1.

Game modo prad┼żioje prie "new" prisira┼íome:

new Text:SEKIMAS;

Taipogi PlayerDB.txt prie kit┼│ enum'┼│:

new seklys,
new beglys,

Pirmasis new'as - jis mums reikalingas,kad atpa┼żint┼│ v─Śliau sukurt─ů Texdraw'─ů

PlayerDB - reikalingi kintamiesiems atpa┼żinti

2.

Sukuriame pa─Źio texdraw'o funkcijas

public OnGameModeInit()

callback'e (gali b┼źti data/init.txt):

SEKIMAS = TextDrawCreate( 14, 150, "Beglys uz:~n~~n~" );//sukuriame Texdraw nustatome jo buvimo koordinates, i┼ílyginame teksta su ~n~ (keliame nauj─ů eilut─Ö)
  TextDrawUseBox(SEKIMAS,1);//Sukuriame d─Ś┼żut─Ö
  TextDrawBoxColor(SEKIMAS,0x00000066);//Nustatome d─Ś┼żut─Śs spalva (pilka)
  TextDrawTextSize(SEKIMAS,159, 81);//Nustatome dyd─» (patariu nekeisti)
  TextDrawBackgroundColor(SEKIMAS,0x000000ff);//Fono spalva (juoda)
  TextDrawFont(SEKIMS,2);//Tekstui priskiriame sšifto stylių
  TextDrawLetterSize(SEKIMAS,0.33, 1);//nustatome raid┼żi┼│ dyd─»
  TextDrawColor(SEKIMAS,0xffffffff );//raid┼żi┼│ spalva (balta)
  TextDrawSetOutline(SEKIMAS,1);//nustatome kad raid─Śs tur─Śt┼│ apipavidalinim─ů
  TextDrawSetProportional(SEKIMAS,1);//Lyginam m┼źs┼│ texdrw'─ů proporcingai
  TextDrawSetShadow(SEKIMAS,1);// u┼żdedame ┼íe┼í─Śl─»

3.

Turime jau teksdraw'─ů reiki─ů j─» ka┼żkaip aktyvuoti taigi sukuriame komand─ů,po:

public OnPlayerCommandText(playerid, cmdtext[])

if(!strcmp(cmdtext, "/sekti", true,6))// ivedus komand─ů - tesiame, skacius komandos ilgis
  {
 if(playerDB[playerid][specialybe]!=2){SendClientMessage(playerid,RED,"┼ái komanda teis─Śsaugai!"); return 1;}//darbo kintamasis nera lygus 2 - siunciame zinute (pasikeisti)
     new tname[MAX_PLAYER_NAME];//sekamojo new'sas, priskiriantis visus zaidejus
       strmid(tname,GetArgument(1, cmdtext, 0),0,MAX_PLAYER_NAME);// jei nebus tarpo tarpo tarp nick ar tik komanda, isgavus ja kartosime funkcija ir siusime pranesima:
        if(!strcmp(tname,"0",true)){SendClientMessage(playerid, GREEN, "Sekti b─Śgant─» nusikalt─Śl─» /Sekti Vardas_Pavard─Ś"); return 1;}
        new tid = GetPlayeridMid(tname);//gauname sekamojo id
        if(tid==INVALID_PLAYER_ID)// jei toks id negalioja
        {
         SendClientMessage(playerid,RED,"Tokio ┼żaid─Śjo n─Śra!");// issiunciame zinute
        return 1;//baigiame funkcij─ů
        }
           if(tid == playerid)// jei id tavo - neleiziame
     {
     SendClientMessage(playerid,RED,"Kam tau sekti save !?");// zinute, baigiame
     return 1;//baigiame funkcij─ů
              }
     }
          if(playerDB[playerid][seklys])// jei jau sekame zaideja, ir id nebegaliotu
     {
     if(tid == playerid)// nepersijungtu atgal (nebutina to daryti )
     {
     SendClientMessage(playerid,RED,"Kam tau sekti save !?");
     return 1;
     }
     playerDB[playerid][seklys]=false;//kartojant komanta (galima ir "else", sekliui bus kintamasis priskirtas false; reiskia jis nebeseks
     playerDB[tid][beglys]=false;//isjungiame sekamojo kintamaji "tid" - jo reiksme
     TextDrawHideForPlayer(playerid, SEKIMAS); // paslepiame kurta texdraw'─ů
     DisablePlayerCheckpoint(playerid);// isjungiame chekpintus
     return 1;// gra┼żiname funkcij─ů
     }
     {
        GetPlayerName(tid,tname,sizeof(tname));// isgauname sekamojo vard─ů
        new name[MAX_PLAYER_NAME];//gausime  vard─ů, i┼í vis┼│ ┼żaid─Śj┼│
        GetPlayerName(playerid,name,sizeof(name));//gaunam varda, formatuojame
     GetPlayerName(playerid,name,sizeof(name));
     TextDrawShowForPlayer(playerid, SEKIMAS);// suaktyvuojame texdraw'─ů
     playerDB[tid][beglys]=true;//sekamajam priskiriame kintamaji - teigiama
     playerDB[playerid][seklys]=true;// sekliui taipogi teigiamaji
     return 1;// gra┼żiname funkcij─ů
	}

3.

Na dabar mes dar nieko neseksime, tik turime b─Śglio vard─ů,bei kintamuosius na o kas gi bus, jei jis bus teigiamas?

Po:

public OnPlayerUpdate(playerid)

(galima kurti ir taimer─», tai labiau patirusiems)

if(playerDB[playerid][seklys])// jei aktyvuojamas  seklio kintamasis
{
for(new i = 0; i != MAX_PLAYERS; ++i){// masyvas zaidejams, jei jo nebus buginsis id
if (!IsPlayerConnected(i))continue;//jei "prisikonectinta" - tesiame
if (playerDB[i][beglys])//beglio kintamais isgautame masyve "i"
{
new vardas[MAX_PLAYER_NAME];//reikalingas gauti vardui
GetPlayerName(i,vardas,MAX_PLAYER_NAME);//gauname varda
new Float:coo[6], SekString[128];//float'as gauti pozicijai, SekString[128] - stingo dydis
GetPlayerPos(i,coo[0],coo[1],coo[2]);//gauname pozicija beglio "i" masyve
GetPlayerPos(playerid,coo[3],coo[4],coo[5]);//gauname savo pozicija
new Float:distance = ((floatabs(coo[0]-coo[3])+floatabs(coo[1]-coo[4])+floatabs(coo[2]-coo[5]))/3)/100;
format(SekString, sizeof(SekString), "~g~Beglys: ~w~%s ~g~uz:~n~~n~%f KM",vardas ,distance);// isvedame float'─ů vaizduojame ji,gauname beglio vard─ů.
SetPlayerCheckpoint(playerid,coo[0],coo[1],coo[2],2);//Priskirime chekpoint─ů pagal float.
TextDrawSetString(SEKIMAS, SekString);// texdrawui priskiriame string'─ů
}
}
}

Rezultatas:

f009a6d23dc5f767578f6d448a903fef77.png

SendClientMessage funkcijose naudokite spalvas pagal save!

P.S - ┼íis callbackas tikrina labai greitai,~6 kartus per sec tod─Śl patartina naudoti taimer─», taip sunaudosite ma┼żiau resurs┼│, jei bus pra┼íym┼│ - sukursiu.

Jei rasite klaid┼│ - prane┼íkite,a─Źi┼ź u┼ż d─Śmes─»

  • Teigiamai 4

Dalintis ┼í─» prane┼íim─ů


Nuoroda iki šio pranešimo
Dalintis per kit─ů puslap─»

Šaunuolis, kam nors pravers, aš asmeniškai turiu :D ir daug ko iš šitos komandos gali išmokti :)

Bet man atrodo kad ─Źia i┼í Ances gm i┼íimta.

Dalintis ┼í─» prane┼íim─ů


Nuoroda iki šio pranešimo
Dalintis per kit─ů puslap─»
Komandoje gal┼źt ─»v─Śliau su {} tuoj patikrinsiu :)

if(!strcmp(cmdtext, "/sekti", true,6))// ivedus komand─ů - tesiame, skacius komandos ilgis
  {
 if(playerDB[playerid][specialybe]!=2){SendClientMessage(playerid,RED,"┼ái komanda teis─Śsaugai!"); return 1;}//darbo kintamasis nera lygus 2 - siunciame zinute (pasikeisti)
     new tname[MAX_PLAYER_NAME];//sekamojo new'sas, priskiriantis visus zaidejus
       strmid(tname,GetArgument(1, cmdtext, 0),0,MAX_PLAYER_NAME);// jei nebus tarpo tarpo tarp nick ar tik komanda, isgavus ja kartosime funkcija ir siusime pranesima:
        if(!strcmp(tname,"0",true)){SendClientMessage(playerid, GREEN, "Sekti b─Śgant─» nusikalt─Śl─» /Sekti Vardas_Pavard─Ś"); return 1;}
        new tid = GetPlayeridMid(tname);//gauname sekamojo id
        if(tid==INVALID_PLAYER_ID)// jei toks id negalioja
        {
         SendClientMessage(playerid,RED,"Tokio ┼żaid─Śjo n─Śra!");// issiunciame zinute
        return 1;//baigiame funkcij─ů
        }
           if(tid == playerid)// jei id tavo - neleiziame
     {
     SendClientMessage(playerid,RED,"Kam tau sekti save !?");// zinute, baigiame
     return 1;//baigiame funkcij─ů
              }
     }
          if(playerDB[playerid][seklys])// jei jau sekame zaideja, ir id nebegaliotu
     {
     if(tid == playerid)// nepersijungtu atgal (nebutina to daryti )
     {
     SendClientMessage(playerid,RED,"Kam tau sekti save !?");
     return 1;
     }
     playerDB[playerid][seklys]=false;//kartojant komanta (galima ir "else", sekliui bus kintamasis priskirtas false; reiskia jis nebeseks
     playerDB[tid][beglys]=false;//isjungiame sekamojo kintamaji "tid" - jo reiksme
     TextDrawHideForPlayer(playerid, SEKIMAS); // paslepiame kurta texdraw'─ů
     DisablePlayerCheckpoint(playerid);// isjungiame chekpintus
     return 1;// gra┼żiname funkcij─ů
     }
     {
        GetPlayerName(tid,tname,sizeof(tname));// isgauname sekamojo vard─ů
        new name[MAX_PLAYER_NAME];//gausime  vard─ů, i┼í vis┼│ ┼żaid─Śj┼│
        GetPlayerName(playerid,name,sizeof(name));//gaunam varda, formatuojame
     GetPlayerName(playerid,name,sizeof(name));
     TextDrawShowForPlayer(playerid, SEKIMAS);// suaktyvuojame texdraw'─ů
     playerDB[tid][beglys]=true;//sekamajam priskiriame kintamaji - teigiama
     playerDB[playerid][seklys]=true;// sekliui taipogi teigiamaji
     return 1;// gra┼żiname funkcij─ů
     }

Klaid─ů buvo tokia padejeij }, bet pamir┼íai atidaryt :song:

Dalintis ┼í─» prane┼íim─ů


Nuoroda iki šio pranešimo
Dalintis per kit─ů puslap─»
Komandoje gal┼źt ─»v─Śliau su {} tuoj patikrinsiu :)

if(!strcmp(cmdtext, "/sekti", true,6))// ivedus komand─ů - tesiame, skacius komandos ilgis
  {
 if(playerDB[playerid][specialybe]!=2){SendClientMessage(playerid,RED,"┼ái komanda teis─Śsaugai!"); return 1;}//darbo kintamasis nera lygus 2 - siunciame zinute (pasikeisti)
     new tname[MAX_PLAYER_NAME];//sekamojo new'sas, priskiriantis visus zaidejus
       strmid(tname,GetArgument(1, cmdtext, 0),0,MAX_PLAYER_NAME);// jei nebus tarpo tarpo tarp nick ar tik komanda, isgavus ja kartosime funkcija ir siusime pranesima:
        if(!strcmp(tname,"0",true)){SendClientMessage(playerid, GREEN, "Sekti b─Śgant─» nusikalt─Śl─» /Sekti Vardas_Pavard─Ś"); return 1;}
        new tid = GetPlayeridMid(tname);//gauname sekamojo id
        if(tid==INVALID_PLAYER_ID)// jei toks id negalioja
        {
         SendClientMessage(playerid,RED,"Tokio ┼żaid─Śjo n─Śra!");// issiunciame zinute
        return 1;//baigiame funkcij─ů
        }
           if(tid == playerid)// jei id tavo - neleiziame
     {
     SendClientMessage(playerid,RED,"Kam tau sekti save !?");// zinute, baigiame
     return 1;//baigiame funkcij─ů
              }
     }
          if(playerDB[playerid][seklys])// jei jau sekame zaideja, ir id nebegaliotu
     {
     if(tid == playerid)// nepersijungtu atgal (nebutina to daryti )
     {
     SendClientMessage(playerid,RED,"Kam tau sekti save !?");
     return 1;
     }
     playerDB[playerid][seklys]=false;//kartojant komanta (galima ir "else", sekliui bus kintamasis priskirtas false; reiskia jis nebeseks
     playerDB[tid][beglys]=false;//isjungiame sekamojo kintamaji "tid" - jo reiksme
     TextDrawHideForPlayer(playerid, SEKIMAS); // paslepiame kurta texdraw'─ů
     DisablePlayerCheckpoint(playerid);// isjungiame chekpintus
     return 1;// gra┼żiname funkcij─ů
     }
     {
        GetPlayerName(tid,tname,sizeof(tname));// isgauname sekamojo vard─ů
        new name[MAX_PLAYER_NAME];//gausime  vard─ů, i┼í vis┼│ ┼żaid─Śj┼│
        GetPlayerName(playerid,name,sizeof(name));//gaunam varda, formatuojame
     GetPlayerName(playerid,name,sizeof(name));
     TextDrawShowForPlayer(playerid, SEKIMAS);// suaktyvuojame texdraw'─ů
     playerDB[tid][beglys]=true;//sekamajam priskiriame kintamaji - teigiama
     playerDB[playerid][seklys]=true;// sekliui taipogi teigiamaji
     return 1;// gra┼żiname funkcij─ů
     }

Klaid─ů buvo tokia padejeij }, bet pamir┼íai atidaryt :song:

Aha, d─Śkui dabar pats pasteb─Śjau :)

  • Teigiamai 1

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─ů.