SA-MP Forums Archive
/Buybeer amount - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: /Buybeer amount (/showthread.php?tid=102032)



/Buybeer amount - Sal_Kings - 13.10.2009

Код:
if(strcmp(cmdtext, "/buybeer", true) == 0)
{
	new tmp[5], index;

	new length = strlen(cmdtext);
	while ((index < length) && (cmdtext[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	while ((index < length) && (cmdtext[index] > ' ') && ((index - offset) < (sizeof(tmp) - 1)))
	{
		tmp[index - offset] = cmdtext[index];
		index++;
	}
	tmp[index - offset] = EOS;

	if( ! strlen(tmp) ) return SendClientMessage(playerid, 0xFFFFFFAA, "Usage: /buybeer [amount]");
	new amount = strval(tmp);

	if ( GetPlayerMoney(playerid) < (amount*50) ) return SendClientMessage(playerid, 0xFFFFFFAA, "You don't have enough money to buy that amount of beer.");

	GivePlayerMoney( playerid, (50*amount) );

	BEER[playerid] += amount;

	return 1;
}
Ok so, this is a script to type /buybeer amount.

So if you type /buybeer 3 you will get 3 beers, and you will loose 150$.
This is for my RPG script btw.
The problem is when i type /buybeer ingame it does not say "Usage : /buybeer amount". Nothing happens.
When i type /buybeer 3, it says "unkown command".


Re: /Buybeer amount - Sal_Kings - 13.10.2009

No one .. ?


Re: /Buybeer amount - Correlli - 13.10.2009

-> Script request topic.


Re: /Buybeer amount - _CHoz - 13.10.2009

Код:
if(strcmp(cmd, "/buybeer", true) == 0)
{
	new tmp[5], idx;
	tmp = strtok(cmdtext, idx);

	if( ! strlen(tmp) ) return SendClientMessage(playerid, 0xFFFFFFAA, "Usage: /buybeer [amount]");
	new amount = strval(tmp);

	if ( GetPlayerMoney(playerid) < (amount*50) ) return SendClientMessage(playerid, 0xFFFFFFAA, "You don't have enough money to buy that amount of beer.");

	GivePlayerMoney( playerid, (50*amount) );

	BEER[playerid] += amount;

	return 1;
}
is that it?


Re: /Buybeer amount - Correlli - 13.10.2009

@_CHoz: -> http://forum.sa-mp.com/index.php?topic=78026.0


Re: /Buybeer amount - _CHoz - 13.10.2009

Quote:
Originally Posted by Don Correlli
Lol thanks.
New things to leard every day.


Re: /Buybeer amount - Sal_Kings - 13.10.2009

Quote:
Originally Posted by _CHoz
Код:
if(strcmp(cmd, "/buybeer", true) == 0)
{
	new tmp[256], idx;
	tmp = strtok(cmdtext, idx);

	if( ! strlen(tmp) ) return SendClientMessage(playerid, 0xFFFFFFAA, "Usage: /buybeer [amount]");
	new amount = strval(tmp);

	if ( GetPlayerMoney(playerid) < (amount*50) ) return SendClientMessage(playerid, 0xFFFFFFAA, "You don't have enough money to buy that amount of beer.");

	GivePlayerMoney( playerid, (50*amount) );

	BEER[playerid] += amount;

	return 1;
}
is that it?
It has some errors.
I am new to scripting, thanks for helping and mind telling me how to fix these errors?

Код:
C:\Documents and Settings\home\My Documents\KingsRPG.pwn(214) : error 017: undefined symbol "cmd"
C:\Documents and Settings\home\My Documents\KingsRPG.pwn(217) : error 017: undefined symbol "strtok"
C:\Documents and Settings\home\My Documents\KingsRPG.pwn(217) : error 033: array must be indexed (variable "tmp")
C:\Documents and Settings\home\My Documents\KingsRPG.pwn(216) : warning 203: symbol is never used: "idx"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


3 Errors.



Re: /Buybeer amount - _CHoz - 13.10.2009

then try this
Код:
if(strcmp(cmdtext, "/buybeer", true) == 0)
{
	new tmp[5], index;

	new length = strlen(cmdtext);
	while ((index < length) && (cmdtext[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	while ((index < length) && (cmdtext[index] > ' ') && ((index - offset) < (sizeof(tmp) - 1)))
	{
		tmp[index - offset] = cmdtext[index];
		index++;
	}
	tmp[index - offset] = EOS;

	if( ! strlen(tmp) ) return SendClientMessage(playerid, 0xFFFFFFAA, "Usage: /buybeer [amount]");
	new amount = strval(tmp);

	if ( GetPlayerMoney(playerid) < (amount*50) ) return SendClientMessage(playerid, 0xFFFFFFAA, "You don't have enough money to buy that amount of beer.");

	GivePlayerMoney( playerid, (50*amount) );

	BEER[playerid] += amount;

	return 1;
}



Re: /Buybeer amount - Correlli - 13.10.2009

That will give the warning about variable shadowing with the same name because you defined 'tmp' two times. First time with 5 cells and second time with 15 cells.


Re: /Buybeer amount - MenaceX^ - 13.10.2009

Quote:
Originally Posted by Don Correlli
-> Script request topic.
He doesn't request anything.


You should make a beers variable and everytime when one is purchased just do -1 to the beers.