Szerző Téma: /meghiv parancs. Segítene nekem valaki megírni?  (Megtekintve 975 alkalommal)

/meghiv parancs. Segítene nekem valaki megírni?
« Dátum: 2015. december 15. - 21:07:51 »
0 Show voters
Sziasztok. Nem vagyok nagy pawnos, az elmélet megvan, de összerakni nem biztos, hogy össze tudnám rakni, ezért a segítségeteket kérném;
/meghiv parancs:
Ha a játékos [Leader] változója == 1-el, akkor tudja elkövetni a parancsot, egyéb esetben írja ki, hogy nem vagy leader.
Ha ez megtörtént, hozza fel a parancsot, /rangad [playerid]
Ha ezt beírta, és a játékos fent van, írja ki a célszemélynek, hogy XY meghívott téged, hogy belépj a %s ((Meghívó játékos frakció száma [Frakcio])) frakcióba. Ha a játékos nincs fent, írja ki, hogy a játékos nem elérhető.Ha a játékos már frakcióban van, azaz a [Frakcio] változója nagyobb mint 0, írja ki, hogy ez a játékos már frakcióban van. Amennyiben 0, a célszemélynek írja ki, hogy XY meghívott téged, hogy belépj a frakcióba. Ha beírja hogy /frakcio elfogad, akkor legyen a játékos frakciója a meghívó fél frakciója [Frakcio] és a rangja ( [Rang] legyen egy, írja ki hogy beléptél, ill.  a meghívónak írja ki ,hogy XY elfogadta a meghívásod. Ha /frakcio elutasit-ot írja be, ne történjen változás, csak jelezzen vissza a meghívónak hogy elutasították a meghívást, ill. írja ki a célszemélynek, hogy elutasítottad a meghívást.
Bug miatt: ha egyszer beírta, hogy /frakcio elutasit, akkor ne tudja utána beírni hogy /frakcio elfogad, hanem írja ki, hogy téged nem hívtak meg semmilyen frakcióba, ergó a meghívás váljon semmissé.
Tehát:
JatekosInfo[playerid[Frakcio]
JatekosInfo[playerid[Leader]
JatekosInfo[playerid[Rang]
illetve van egy Ment(playerid); stockom, ami átírja a .ini-ben a változásokat, a /frakcio elfogad után jó lenne ha ez is lefutna.
Remélem mindent leírtam, és nem hagytam ki valami else-t. Nagyon szépen köszönöm annak, aki megírja nekem. Szép estét.

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
/meghiv parancs. Segítene nekem valaki megírni?
« Válasz #1 Dátum: 2015. december 15. - 21:15:53 »
+1 Show voters
Miért nem írod meg magadnak? Legalább próbáld meg ha \'az elmélet megvan\'.

/meghiv parancs. Segítene nekem valaki megírni?
« Válasz #2 Dátum: 2015. december 15. - 21:17:33 »
0 Show voters
Megpróbáltam, és egészen alakul az egyszerűbb parancsok megírása, azonban itt a case (vagyis a választható lehetőségek) és elutasítás esetén a meghívás semmissé tétele megnehezíti a dolgomat, és biztos vagyok benne, hogy nem sikerülne. Sőt, próbáltam is, és hát az eredmény magáért beszélt... :-[

/meghiv parancs. Segítene nekem valaki megírni?
« Válasz #3 Dátum: 2015. december 15. - 21:19:48 »
0 Show voters
Az alapján, amit ide leírtál, szerintem simán megtudnád csinálni. :D
Nem volt válasz amikor írtam.
« Utoljára szerkesztve: 2015. december 15. - 21:21:23 írta impreZZa »

/meghiv parancs. Segítene nekem valaki megírni?
« Válasz #4 Dátum: 2015. december 15. - 21:21:47 »
0 Show voters
Hát nekifutok srácok, köszi a bíztatást!  ;D Ennek ellenére, ha valaki nagyon unatkozna, belevághat, biztos szebb lesz mint az enyém, ha más nem az elrendezése miatt. :D

Dupla hozzászólás automatikusan összefûzve. ( 2015. december 17. - 11:59:10 )

Senki? :(
« Utoljára szerkesztve: 2015. december 17. - 11:59:10 írta kacsaporkolt »

Nem elérhető kos

  • 292
    • Profil megtekintése
/meghiv parancs. Segítene nekem valaki megírni?
« Válasz #5 Dátum: 2015. december 22. - 09:50:31 »
0 Show voters
#define Max_Frakcio 10
#undef    MAX_PLAYERS
#define MAX_PLAYERS 100
enum frakcio
{
f_nev[64],
f_id,
f_maxrang
};
new FrakcioInfo[Max_Frakcio][frakcio];
enum pInfo
{
Frakcio,
Leader,
Rang
};
new JatekosInfo[MAX_PLAYERS][pInfo]

 
először is enumokat csinálsz, ha meg vannak nem csak a playert mented hanem magát a frakciót is, h kényelmesebb legyen a használata.
következő lépés:
létre kell hoznod mentés/betöltést
utána
elkezded írni a parancsokat zcmds vagy strcmps félével
ha az elmélet megy a gyakorlatban is menni fog :)

/meghiv parancs. Segítene nekem valaki megírni?
« Válasz #6 Dátum: 2015. december 22. - 16:17:09 »
+1 Show voters

new Meghivva[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
Meghivva[playerid] = -1;
return 1;
}
CMD:frakcio(playerid,params[])
{
new szoveg[64],funkcio[32],nev[MAX_PLAYER_NAME];
GetPlayerName(playerid,nev,MAX_PLAYER_NAME);
if(sscanf(params,\"s[32]\",funkcio))
{
SendClientMessage(playerid,-1,\"/frakcio [Elfogad || Elutasit]\");
return 1;
}
if(!strcmp(funkcio, \"Elfogad\", true))
{
if(Meghivva[playerid] == -1) return SendClientMessage(playerid,-1,\"Nem vagy meghívva sehová!\");
JatekosInfo[playerid][Frakcio] = JatekosInfo[Meghivva][Frakcio];
JatekosInfo[playerid][Rang] = 1;
SendClientMessage(playerid,-1,\"Beléptél!\");
format(szoveg,\"%s elfogadta a meghívásod\",nev);
SendClientMessage(Meghivva,-1,szoveg);
Meghivva[playerid] = -1;
Ment(playerid);
}
if(!strcmp(funkcio, \"Elutasit\", true))
{
if(Meghivva[playerid] == -1) return SendClientMessage(playerid,-1,\"Nem vagy meghívva sehová!\");
SendClientMessage(playerid,-1,\"Elutasítottad a meghívást!\");
Meghivva[playerid] = -1;
}
}
CMD:meghiv(playerid, params[])
{
if(JatekosInfo[playerid][Leader] == 0) return SendClientMessage(playerid,-1,\"Nem vagy leader!\");
new jatekos,szoveg[64],nev[MAX_PLAYER_NAME];
GetPlayerName(playerid,nev,MAX_PLAYER_NAME);
if(sscanf(params, \"u\", jatekos))
{
SendClientMessage(playerid,-1,\"/meghiv [JatekosID]\");
return 1;
}
if(INVALID_PLAYER_ID == jatekos)
{
SendClientMessage(playerid,-1,\"Nincs fenn a jatekos!\");
return 1;
}
if(IsPlayerNPC(jatekos))
{
SendClientMessage(playerid,-1,\"Ő egy NPC!\");
return 1;
}
if(JatekosInfo[jatekos][Frakcio] != 0)
{
SendClientMessage(playerid,-1,\"Ez a játékos már frakcióban van!\");
return 1;
}
format(szoveg,sizeof(szoveg),\"%s meghívott téged, hogy belépj a frakcióba ((/frakcio elfogad))\",nev);
SendClientMessage(jatekos,-1,szoveg);
Meghivva[jatekos] = playerid;
return 1;
}

 
Nem teszteltem de szerintem jó lesz, majd írj valami vissza jelzést, a leírásod alapján valami ilyesmire gondoltál nem?
a rangad parancshoz meg írd le nekem hogy mennyi a max rang mert elég vicces lesz 235335654 rangot adni valakinek.
Üdv. Hiroshi

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal