Jump to content
  • 0

pomoc sscanf nefunguje ?


R0cky

Dotaz

Ahoj mam problem nepiše mi žádny error ani nič skopiroval sem z jedni stranky givecash a když to napišu ve hře tak to nič nedela . Nevite čim to je ?

 

 

Code: Když sem to dal do PHP codu tak se to posunulo a bylo to špatne :(

 

 

COMMAND:givecash(playerid, params[])
{
new player, amount,name1[24], name2[24], string[128];
if(!sscanf(params, "ui",player,amount))
{
   if(playerid != player)
   {
       if(GetPlayerMoney(playerid) >= amount)
       {
GetPlayerName(playerid, name1, 24);
GetPlayerName(player, name2, 24);
format(string, sizeof(string), "You gaved $%d to %s.",amount,name2);
SendClientMessage(playerid, 0xFFFF00FF, string);
format(string, sizeof(string), "%s gave you $%d!", name1, amount);
SendClientMessage(player, 0xFFFF00FF, string);
GivePlayerMoney(playerid, -amount);
GivePlayerMoney(player, amount);
       }
       else return SendClientMessage(playerid, 0xFF0000FF,"You don't have that much.");
   }
   else return SendClientMessage(playerid, 0xFF0000FF,"You can't pay to yourself.");
}
else return SendClientMessage(playerid, 0xFFFFFFFF,"Usage: /givecash [iD][Amount]");
return 1;
}
Link to comment
Share on other sites

5 odpovědí na tuto otázku

Recommended Posts

  • 0

~> Ten, kdo to dělal, tak to dělal naprosto na nic složitě. Pak není divu, že se v tom sotva někdo vyzná

 

 

 

 

 

 

CMD:givecash(playerid, params[])
{
	new 
		player, amount;
	if(sscanf(params, "ui",player,amount)) return SendClientMessage(playerid, 0xFFFFFFFF,"Usage: /givecash [ID][Amount]");
	if(playerid == player) return SendClientMessage(playerid, 0xFF0000FF,"You can't pay to yourself.");
	if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid, 0xFF0000FF,"You don't have that much.");
	new 
		name1[24], 
		name2[24], 
		string[128];
	GetPlayerName(playerid, name1, 24) , GetPlayerName(player, name2, 24);
	format(string, sizeof(string), "You gaved $%d to %s.",amount,name2);
	format(string, sizeof(string), "%s gave you $%d!", name1, amount);
	SendClientMessage(playerid, 0xFFFF00FF, string) , SendClientMessage(player, 0xFFFF00FF, string);
	GivePlayerMoney(playerid, -amount) , GivePlayerMoney(player, amount);
	return 1;
}

 

Tady to pošle stejnou zprávu oboum hráčům, pokud se nepletu.

 

 

CMD:givecash(playerid, params[])
{
	new player, amount;
	if(sscanf(params, "ui",player,amount)) return SendClientMessage(playerid, 0xFFFFFFFF,"Usage: /givecash [ID][Amount]");
	if(playerid == player) return SendClientMessage(playerid, 0xFF0000FF,"You can't pay to yourself.");
	if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid, 0xFF0000FF,"You don't have that much.");
	new
		name1[24],
		name2[24],
		string[128];
	GetPlayerName(playerid, name1, 24) , GetPlayerName(player, name2, 24);
	format(string, sizeof(string), "You gaved $%d to %s.",amount,name2);
	SendClientMessage(playerid, 0xFFFF00FF, string);
	format(string, sizeof(string), "%s gave you $%d!", name1, amount);
	SendClientMessage(player, 0xFFFF00FF, string);
	GivePlayerMoney(playerid, -amount) , GivePlayerMoney(player, amount);
	return 1;
}
Link to comment
Share on other sites

  • 0

~> Ten, kdo to dělal, tak to dělal naprosto na nic složitě. Pak není divu, že se v tom sotva někdo vyzná

 

 

 

 

 

 

CMD:givecash(playerid, params[])
{
	new 
		player, amount;
	if(sscanf(params, "ui",player,amount)) return SendClientMessage(playerid, 0xFFFFFFFF,"Usage: /givecash [ID][Amount]");
	if(playerid == player) return SendClientMessage(playerid, 0xFF0000FF,"You can't pay to yourself.");
	if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid, 0xFF0000FF,"You don't have that much.");
	new 
		name1[24], 
		name2[24], 
		string[128];
	GetPlayerName(playerid, name1, 24) , GetPlayerName(player, name2, 24);
	format(string, sizeof(string), "You gaved $%d to %s.",amount,name2);
	format(string, sizeof(string), "%s gave you $%d!", name1, amount);
	SendClientMessage(playerid, 0xFFFF00FF, string) , SendClientMessage(player, 0xFFFF00FF, string);
	GivePlayerMoney(playerid, -amount) , GivePlayerMoney(player, amount);
	return 1;
}

Vůbec nefunguje to sami napišu /givecash a nič nenapiše :(

Link to comment
Share on other sites

  • 0

stock PlayerName(id)
{
    new p[26];
    GetPlayerName(id, p, 26);
    return p;
}

COMMAND:givecash(playerid, params[])
{
    new id, penize;
    if(sscanf(params, "ii", id, penize)) return SendClientMessage(playerid, 0xFF0000AA, "/givecash [ID hráče] [Suma]");
    else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "Hráč s tímto ID není na serveru.");
    else if(GetPlayerMoney(playerid) < penize) return SendClientMessage(playerid, 0xFF0000AA, "Nemáš dostatečný počet peněz.");
    else if(id == playerid) return SendClientMessage(playerid, 0xFF0000AA, "Nemůžeš poslat peníze sobě.");
    GivePlayerMoney(id, penize);
    GivePlayerMoney(playerid, -penize);
    new string[128];
    format(string, 128, "Dal jsi hráči %s $%d.", PlayerName(id), penize);
    SendClientMessage(playerid, 0xBAFF00AA, string);
    format(string, 128, "Hráč %s ti poslal $%d.", PlayerName(playerid), penize);
    SendClientMessage(id, 0xBAFF00AA, string);
    return 1;
}

Zkus tohle.

Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

~> Tak v tom případě buď používáš stockovou verzi (pak změníš "ui" na "ii"), a nebo máš chybu jinde

u funguje i v té tvé "stockové" verzi

CMD:givecash(playerid,params[])
{
	new id,amount;
	if(sscanf(params,"ui",id,amount)) return SendClientMessage(playerid, 0xFFFFFFFF,"Usage: /givecash [ID][Amount]");
	if(playerid == id) return SendClientMessage(playerid, 0xFF0000FF,"You can't pay to yourself.");
	if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid, 0xFF0000FF,"You don't have that much.");

	new name1[24],name2[24],string[128];

	GetPlayerName(playerid, name1, 24);
	GetPlayerName(id, name2, 24);

	format(string, sizeof(string), "You gaved $%d to %s.",amount,name2);
	SendClientMessage(playerid, 0xFFFF00FF, string);

	format(string, sizeof(string), "%s gave you $%d!", name1, amount);
	SendClientMessage(id, 0xFFFF00FF, string);

	GivePlayerMoney(playerid, -amount);
	GivePlayerMoney(id, amount);

	return 1;
}

ty kódy by sis měl dělat přehlednější, pak se v tom budeš ztrácet... tohle by ti mělo fungovat, pokud ne, bude chyba někde se samotnými příkazy (výsledek kopírování)

 

jinak, zapracoval bych na angličtině

Link to comment
Share on other sites

  • 0

Ďiky pomohli ste ale zase ked si to dam do módu tak tam mam nekde chybu ale použil sem ZCMD na OnPlayerCommandText a tam mi to funguje :)

 

Pokud to nekdo chce tady:

 

new cmd[256];
if(strcmp(cmd, "/givecash", true) == 0) {
  new tmp[256];
  new string[256];
new playermoney;
new sendername[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new giveplayerid, moneys, idx;
 
cmd = strtok(cmdtext, idx);
tmp = strtok(cmdtext, idx);
 
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
return 1;
}
giveplayerid = strval(tmp);
 
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
return 1;
}
  moneys = strval(tmp);
if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "You have sent %s(player: %d), $%d.", giveplayer,giveplayerid, moneys);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "You have recieved $%d from %s(player: %d).", moneys, sendername, playerid);
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
printf("%s(playerid:%d) has transfered %d to %s(playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
}
else {
SendClientMessage(playerid, COLOR_YELLOW, "Invalid transaction amount.");
}
}
else {
format(string, sizeof(string), "%d is not an active player.", giveplayerid);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
return 1;
}
 
A ešte nekde na konec:
 
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
 
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
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...