Jump to content
  • 0

pomoc GetInfo


Pajdalf

Dotaz

Zdravím, vytvořil jsem si příkaz /getinfo [iD]

 

Ale nevím, jak udělat u funkcí:

GetPlayerInterior
GetPlayerHealth
GetPlayerArmour
GetPlayerWeapon
GetPlayerPing

Aby to administrátorovy vypsalo ty fuknce..  Jekolikož, se tam doplnuje pouze playerid, v mém případě targetid..

Mám to udělat stejně jako např. GetPlayerName či GetPlayerPos?

 

 

Kod příkazu:

CMD:getinfo(playerid, params[])
{
	new targetid;
	if(!IsPlayerAdmin(playerid)) return SCM(playerid, COLOR_RED, "[ERROR]Nejsi administrátor!!!");
	if(sscanf(params,"d",targetid)) return SCM(playerid,COLOR_GOLD, "[PŘÍKAZ]/getinfo [ID]");
	if(!IsPlayerConnected(targetid)) return SCM(playerid,COLOR_RED, "[ERROR]Hráč již není připojen");
	
	new Float:x ,Float:y, Float:z;
	
	new string[128];
	new target[256];
	new targetip[256];
	
	GetPlayerName(targetid,target, sizeof(target));
	GetPlayerPos(targetid, x,y,z);
	GetPlayerInterior(targetid);
	GetPlayerHealth(targetid);
	GetPlayerArmour(targetid);
	GetPlayerWeapon(targetid);
	GetPlayerPing(targetid);
	GetPlayerIp(targetid,targetip, sizeof(targetip));
	
	format(string, sizeof(string), "[INFO]Jméno: %s, Pozice: X:%d Y:%d Z:%d\n Interier:", target,x,y,z);
	SCM(playerid, COLOR_LGREEN, string);

return 1;
}

Díky, Pajda.

Link to comment
Share on other sites

12 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Globální moderátor

Ano máš to správně. U  funkcí se předává ID hráče, aby se vědělo, kterému se to má provést. Akorát některé funkce vrací hodnotu, kterou hledáš. Např GetPlayerInterior

 

Return Values: The interior ID the player is currently in (viz. http://wiki.sa-mp.com/wiki/GetPlayerInterior - wiki se ti bude hodit, nauč se s ní používat)

Takže buď ji vrátíš hned formátem do textu nebo si deklaruj proměnnou. Tzn. 

new interior = GetPlayerInterior(targetid);
format(string, sizeof(string), "[INFO]Jméno: %s, Pozice: X:%d Y:%d Z:%d\n Interier:", target,x,y,z,interior);

nebo

format(string, sizeof(string), "[INFO]Jméno: %s, Pozice: X:%d Y:%d Z:%d\n Interier:", target,x,y,z,GetPlayerInterior(targetid));

Totéž to bude s GetPlayerPing, GetPlayerWeapon.

 

Co se týče GetPlayerHealth a GetPlayerArmour, ty mají druhej parametr, kde určuješ proměnnou, do které se hodnoty ukládá (v C bych to nazval adresou, do které se má hodnota uložit) 

 

&Float:armour The float to to store the armour in, passed by reference.

new Float:armour;
GetPlayerArmour(targetid,armour);

Tak snad jsem ti to trochu osvětlil. Kdybys měl problémy, tak se ptej.

Pozn.: proto většinou callbacky s předaným parametrem playerid, protože trigger vyvolal nějaký hráč (např. změna state, manipulace s dialogem, connect, disconnect atd.). No pryč od teorie,

 

--------------------------------------------------------------------------------------------------------------------------------

 

co bych ještě poupravil jsou délky řetězců. Maximální délka nicku v sa-mpu je 24, tzn asi ideální by bylo new target[24];

To samé IP. IP adresa je uspořádaná čtveřice čísel oddělených tečkami, proto může dosáhnout nejvýše 15 (255.255.255.255) resp. 16 znaků (4x3 + 3x tečky + ukončovací znak - ukládá se jako string). new targetip[16];

 

Jsou to malé drobnosti, které člověk nemusí v téhle době ani řešit, mažou se ze stacku ihned jakmile vyjdeš ven z kódu (v tomto případě příkazu), ale není chybou se nad tím zamyslet. Taky nepříjdeš do obchodu si koupit 150 vajec, aby si udělal omeletu pro jednoho člověka.

Edited by HighPrint
Link to comment
Share on other sites

  • 0

 

Tak snad jsem ti to trochu osvětlil.

Ano, ještě se chci zeptat.. Když v tom Stringu mám to Jméno: %s, ...

Dá se udělat aby to Jméno bylo např. červenou barvou a jméno hráče zase nějakou jinou?

 

Aby to bylo trochu přehledné.

Link to comment
Share on other sites

  • 0

EDIT:

 

Blbne HP a armour - zobrazuje se nějaké vysoké číslo

U IP se zobrazují pouze první dvě čísla.

 

Obrázek - https://ctrlv.cz/S0QA

CMD:getinfo(playerid, params[])
{
new targetid;
if(!IsPlayerAdmin(playerid)) return SCM(playerid, COLOR_RED, "[ERROR]Nejsi administrátor!!!");
if(sscanf(params,"d",targetid)) return SCM(playerid,COLOR_GOLD, "[Příkaz]/getinfo [ID]");
if(!IsPlayerConnected(targetid)) return SCM(playerid,COLOR_RED, "[ERROR]Hráč není připojen!");

new string[128];
new target[24];
new targetip[16];
new interior = GetPlayerInterior(targetid);
new ammo = GetPlayerAmmo(targetid);
new ping = GetPlayerPing(targetid);
new weapon = GetPlayerWeapon(targetid);


new Float:armour;
new Float:hp;


GetPlayerName(targetid,target, sizeof(target));
GetPlayerIp(targetid,targetip, sizeof(targetip));
GetPlayerPing(targetid);
GetPlayerInterior(targetid);
GetPlayerHealth(targetid,hp);
GetPlayerArmour(targetid,armour);
GetPlayerAmmo(targetid);
GetPlayerWeapon(targetid);


format(string, sizeof(string), "[INFO] {1E90FF}Jméno: {FFD700}%s, {1E90FF}Interier: {FFD700}%d.", target, interior);
SCM(playerid, COLOR_LGREEN, string);


format(string, sizeof(string), "[INFO] {1E90FF}Zbraň: {FFD700}%d, {1E90FF}Náboje: {FFD700}%d.", weapon, ammo);
SCM(playerid, COLOR_LGREEN, string);


format(string, sizeof(string), "[INFO] {1E90FF}Zdraví: {FFD700}%d, {1E90FF}Vesta: {FFD700}%d.", hp, armour);
SCM(playerid, COLOR_LGREEN, string);


format(string, sizeof(string), "[INFO] {1E90FF}IP: {FFD700}%d, {1E90FF}Ping: {FFD700}%d.", targetip, ping);
SCM(playerid, COLOR_LGREEN, string);
Edited by Pajdalf
Link to comment
Share on other sites

  • 0

~> Když máš proměnnou float, tak musíš mít i specifikátor float:

 

format(string, sizeof(string), "[INFO] {1E90FF}Zdraví: {FFD700}%.2f, {1E90FF}Vesta: {FFD700}%.2f.", hp, armour);

~> To samé u té IP. Je to string(čísla a tečky), ne číslo.

Link to comment
Share on other sites

  • 0

Ahaa tak pretoo mi to vtedy blblo :d Dík aj mne ste poradili :-D

já nechápu jak vás nemůže napadnout taková jednoduchá věc.. když zapisujete IP DO STRINGU tak tam asi logicky musí byt %s a né %i  :d

Edited by Steam Wallet
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...