Gta San Andreas MultiPlayer (samp) HUN
Navigation
     
Account
Felhasználónév:

Jelszó:
SúgóSúgó
Regisztráció
Elfelejtettem a jelszót
     
Kép
Szerver
Legyen ennek a weboldalnak saját samp szervere?

Igen
Nem
Szavazás állása
Lezárt szavazások
     
Friss

Utolsó módosítás
2013 máj. 19.
12:17

 

     
Más weblapok
 SA:MP Fórum
SA:MP Wiki
Google

     

PAWN Eszközök
     
Paraméterek(sscanf és dcmd)

Hali
Most leírom nektek hogyan kell paraméteres parancsokat készíteni. (Pl.: /parancs [playerid] vagy /parancs [szöveg] stb.)

Ezeket a parancsokat strtokkal vagy sscanf-al lehet megoldani
Én az sscanfot és dcmd-t ajánlom mert pofon egyszerű

Először is a pawnoba be kell ezt illesztenünk
És ezt is (kb a mod elejére):

#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

Majd ezután egy új sorba írjuk

dcmd_heal(playerid, params[])
{
new giveplayerid; //ez lesz a másik játékos
if (sscanf(params, "u", giveplayerid)) SendClientMessage(playerid, 0xFF0000AA, "Használat: /heal [playerid]");
else if (giveplayerid == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, "Hiba: Nincs ilyen játékos!");
else{
new name[MAX_PLAYER_NAME],string[200];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof string, "%s feltöltötte valakinek az életét", name);
   SendClientMessageToAll(0xFF0000AA,string);
                SetPlayerHealth(playerid, 100);
}
return 1;
}
 
Magyarázat: 
if (sscanf(params, "u", giveplayerid)) - A giveplayerid-t rátesszük az U betűre azaz egy játékosid-re
else if (giveplayerid == INVALID_PLAYER_ID) - Hogyha a másik játékos azaz a giveplayerid nem létezik

Ilyenkor most a giveplayerid lesz mindig a másik játékos és a playerid pedig az aki beírta a /heal parancsot

pl.: SendClientMessage(giveplayerid, szín, "Cső"); - Ilyenkor annak a játékosnak küldi el akinek beírtad a parancs után az id-jét
SendClientMessage(playerid, szin, "Küldtél valakinek egy Csá üzenetet"); - Ezt pedig annak a játékosnak írja ki aki beírta a parancsot

Pirossal kijelöltem az U betűt mert azt át lehet írni másra ha nem pont játékos id-t akarsz, hanem pélául egy számot vagy szöveget

Betűk/karakterek Adat típus Példa
d Egész szám Pénz
i Egész szám Pénz
c Karakter Egy karakter
u Játékos ID / Név Játékos
s Szöveg / karakterlánc  Bármilyen hosszúságú szöveg pl.: /elad [Üzenet]
h Hexa szám Szín
x Hexa szám Szín
f Float Koordináta
z Indok Például egy /ban vagy /kick parancsnál az indok
 

Ha megvagy akkor ezután az OnPlayerCommandText-hez rakd a return 0; -val egyvonalba rakjuk ezt

dcmd(heal, 4, cmdtext);

Az a piros négyes azt jelzi hogy a parancs 4 betűből áll
Tehát mondjuk egy REPORT parancssnál így nézne ki: dcmd(report, 6, cmdtext);
Mivel a "report" szó 6 betűből áll


És itt a végeredmény: KATT


Például egy PM-nél ([playerid] [üzenet])

dcmd_pm(playerid, params[])
{
new giveplayerid, mess[200]; //ez lesz a másik játékos
if (sscanf(params, "us", giveplayerid, mess)) SendClientMessage(playerid, 0xFF0000AA, "Használat: /pm [playerid] [üzenet]");
else if (giveplayerid == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, "Hiba: Nincs ilyen játékos!");
else{
new name[MAX_PLAYER_NAME],string[200];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof string, "[PM]%s:%s", name, mess);
   SendClientMessage(giveplayerid, 0xFF0000AA,string);
   SendClientMessage(playerid, 0xFF0000AA, "PM elküldve!");
}
return 1;
}

És persze le ne felejtsük az onplayercommandtext-nél a:    dcmd(pm, 2, cmdtext);  -et
Magyarázat: 
 

US - Az U a játékos id, az S pedig a szöveg

Remélem segítettem ;)

Töltsd le a nagy példát itt

 

4 hozzászólás
Idézet
2011.03.16. 13:55
Maffia

Hello..Azt meglehet oldani hogy kiirja hogy kit healeztél fel???Előre is kösz

 

Idézet
2010.08.24. 21:53
ELEM

 Köszi a választ :D

Idézet
2010.08.24. 18:22
maarkmaki

 Rcon admin:

dcmd_heal(playerid, params[])

{
new giveplayerid; //ez lesz a másik játékos
if (sscanf(params, "u", giveplayerid)) SendClientMessage(playerid, 0xFF0000AA, "Használat: /heal [playerid]");
else if (giveplayerid == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, "Hiba: Nincs ilyen játékos!");
else{
                if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "Nem vagy admin!");
new name[MAX_PLAYER_NAME],string[200];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof string, "%s feltöltötte valakinek az életét", name);
   SendClientMessageToAll(0xFF0000AA,string);
}
return 1;
}
if(!IsPlayerAdmin(playerid)) - Ha NEM admin (Felkiáltójelet ne feledjétek)

Csak egy bizonyos gteam (Pl.: Van 2 csapat tegyük fel, TEAM_EGY, TEAM_KETTO)
És ezt akkor csak a TEAM_EGY használhatja

dcmd_heal(playerid, params[])
{
new giveplayerid; //ez lesz a másik játékos
if (sscanf(params, "u", giveplayerid)) SendClientMessage(playerid, 0xFF0000AA, "Használat: /heal [playerid]");
else if (giveplayerid == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, "Hiba: Nincs ilyen játékos!");
else{
                if(gTeam[playerid] != TEAM_EGY) return SendClientMessage(playerid, 0xFF0000AA, "Nem vagy a TEAM_EGY csapatban!");
new name[MAX_PLAYER_NAME],string[200];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof string, "%s feltöltötte valakinek az életét", name);
   SendClientMessageToAll(0xFF0000AA,string);
}
return 1;
}

if(gTeam[playerid] != TEAM_EGY) - Hogy ha a játékos NEM a TEAM_EGY csapatban van

if(gTeam[playerid] == TEAM_EGY) - Hogy ha a jáékos a TeAM_EGY csapatban van
if(gTeam[playerid] == TEAM_EGY || gTeam[playerid] == TEAM_KETTO) - Hogyha a játékos a TEAM_EGY vagy a TEAM_KETTO csapatban van

Idézet
2010.08.24. 16:17
ELEM

 És olyat hogy lehet, hogy egy parancsot csak admin/gTeam tudja használni, pl a health...

     
Nézettség
Indulás: 2010-02-26
     
PAWN/Szkriptek
     
Tutorialok
     
Óra
     
Chat
Kérlek, felesleges dolgokat ne írj a chatbe!
Név:

Üzenet:
:)) :) :@ :? :(( :o :D ;) 8o 8p 8) 8| :( :'( ;D :$
     

Nyereményjáték! Nyerd meg az éjszakai arckrémet! További információkért és játék szabályért kattints! Nyereményjáték!    *****    A legfrissebb hírek Super Mario világából, plusz információk, tippek-trükkök, végigjátszások!    *****    Ha hagyod, hogy magával ragadjon a Mario Golf miliõje, akkor egy egyedi és életre szóló játékélménnyel leszel gazdagabb!    *****    A horoszkóp a lélek tükre, nagyon fontos idõnként megtudni, mit rejteget. Keress meg és nézzünk bele együtt. Várlak!    *****    Dryvit, hõszigetelés! Vállaljuk családi házak, lakások, nyaralók és egyéb épületek homlokzati szigetelését!    *****    rose-harbor.hungarianforum.com - rose-harbor.hungarianforum.com - rose-harbor.hungarianforum.com    *****    Vérfarkasok, boszorkányok, alakváltók, démonok, bukott angyalok és emberek. A világ oly' színes, de vajon békés is?    *****    Az emberek vakok, kiváltképp akkor, ha olyasmivel találkoznak, amit kényelmesebb nem észrevenni... - HUNGARIANFORUM    *****    Valahol Delaware államban létezik egy város, ahol a természetfeletti lények otthonra lelhetnek... Közéjük tartozol?    *****    Minden mágia megköveteli a maga árát... Ez az ár pedig néha túlságosan is nagy, hogy megfizessük - FRPG    *****    Why do all the monsters come out at night? - FRPG - Why do all the monsters come out at night? - FRPG - Aktív közösség    *****    Az oldal egy évvel ezelõtt költözött új otthonába, azóta pedig az élet csak pörög és pörög! - AKTÍV FÓRUMOS SZEREPJÁTÉK    *****    Vajon milyen lehet egy rejtélyekkel teli kisváros polgármesterének lenni? És mi történik, ha a bizalmasod árul el?    *****    A szörnyek miért csak éjjel bújnak elõ? Az ártatlan külsõ mögött is lapulhat valami rémes? - fórumos szerepjáték    *****    Ünnepeld a magyar költészet napját a Mesetárban! Boldog születésnapot, magyar vers!    *****    Amikor nem tudod mit tegyél és tanácstalan vagy akkor segít az asztrológia. Fordúlj hozzám, segítek. Csak kattints!    *****    Részletes személyiség és sors analízis + 3 éves elõrejelzés, majd idõkorlát nélkül felteheted a kérdéseidet. Nézz be!!!!    *****    A horoszkóp a lélek tükre, egyszer mindenkinek érdemes belenéznie. Ez csak intelligencia kérdése. Tedd meg Te is. Várlak    *****    Új kínálatunkban te is megtalálhatod legjobb eladó ingatlanok között a megfelelõt Debrecenben. Simonyi ingatlan Gportal    *****    Szeretnél egy jó receptet? Látogass el oldalamra, szeretettel várlak!