Convert
#1

Hello,

I searched a lot but I couldn't find a converter from zcmd to strcp.
Could someone convert it for me?

PHP код:
CMD:transfer(playeridparams[]){
    new 
idamountcash;
    if(
sscanf(params,"ui"idamount))
        return 
SendClientMessage(playerid0xCECECEFF"CMD: /transfer [player] [amount]");
    if(!
IsPlayerConnected(id))
        return 
SendClientMessage(playerid0xCECECEFF"Player is not connected");
    
cash GetPlayerMoney(playerid);
    if(
amount cash)
        return 
SendClientMessage(playerid0xCECECEFF"You do not have that much!");
    if(
amount 1)
        return 
SendClientMessage(playerid0xCECECEFF"You can not transfer funds under 1!");
    
GivePlayerMoney(playerid, -amount);
    
GivePlayerMoney(idamount);
    
SendClientMessage(playerid0xCECECEFF"You sent the money.");
    
SendClientMessage(id0xCECECEFF"You got given money.");
    return 
1;

Reply
#2

I got this straight from my RP gamemode which I made quite a few years back ago:

Код:
stock IsNumeric(const string[])
{
	for (new i = 0, j = strlen(string); i < j; i++)
	if (string[i] > '9' || string[i] < '0')
    return 0;
	return 1;
}

ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
	new pos = 0;
	while (text[pos] < 0x21)
	{
		if (text[pos] == 0) return INVALID_PLAYER_ID;
		pos++;
	}
	new userid = INVALID_PLAYER_ID;
	if (IsNumeric(text[pos]))
	{
		userid = strval(text[pos]);
		if (userid >=0 && userid < MAX_PLAYERS)
		{
			if(!IsPlayerConnected(userid))
				userid = INVALID_PLAYER_ID;
			else return userid;
		}
	}
	new len = strlen(text[pos]);
	new count = 0;
	new pname[MAX_PLAYER_NAME];
	for (new i = 0; i < MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i, pname, sizeof (pname));
			if (strcmp(pname, text[pos], true, len) == 0)
			{
				if (len == strlen(pname)) return i;
				else
				{
					count++;
					userid = i;
				}
			}
		}
	}
	if (count != 1)
	{
		if (playerid != INVALID_PLAYER_ID)
		{
			if (count) SendClientMessage(playerid, 0xFF0000AA, "Please type the player's full name.");
			else SendClientMessage(playerid, 0xFF0000AA, "The Player's name has not been found.");
		}
		userid = INVALID_PLAYER_ID;
	}
	return userid;
}

stock strvalEx( const string[] )
{
   //Register Protection
   if( strlen( string ) >= 50 ) return 0;
   return strval(string);
}

stock 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;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256],string[248];
    new tmp[256];
	new idx;
    cmd = strtok(cmdtext, idx);
	if(strcmp(cmd, "/pay", true) == 0)
	{
		tmp = strtok(cmdtext,idx);
		if(strlen(tmp))
	  	{
			new giveplayerid = ReturnUser(tmp);
	     	if(IsPlayerConnected(giveplayerid) && !IsPlayerNPC(giveplayerid))
        	{
	    		if(giveplayerid == playerid) { SendClientMessage(playerid,0xFF0000AA," You can't pay yourself."); return 1; }
	       		tmp = strtok(cmdtext,idx);
	          	new cash = strvalEx(tmp);
	          	if(cash < 1 || cash > 999999) { SendClientMessage(playerid,0xFFFFFFAA," Given cash can't be lower than 1 or above 10.000$."); return 1; }
	         	if(GetPlayerMoney(playerid) >= cash)
	     		{
	           		new pName[MAX_PLAYER_NAME], giveplayername[MAX_PLAYER_NAME];
	           		GetPlayerName(playerid, pName,sizeof(pName));
    				GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
					format(string,sizeof(string)," You have received {58A624}%d$ {FFFFFF}from {58A624}%s{FFFFFF}.",cash,pName);
					SendClientMessage(giveplayerid,0xFFFFFFAA,string);
					format(string,sizeof(string)," You have given {58A624}%d$ {FFFFFF}to {58A624}%s{FFFFFF}.",cash,giveplayername);
					SendClientMessage(playerid,0xFFFFFFAA,string);
	            	GivePlayerMoney(playerid,-cash);
	          		GivePlayerMoney(giveplayerid,cash);
				}
				else
				{
					SendClientMessage(playerid,0xFF0000AA," You don't have that money.");
				}
			}
			else
			{
				SendClientMessage(playerid,0xFF0000AA," The Player is not connected.");
			}
		}
		else
		{
			SendClientMessage(playerid,0xFF0000AA," Usage: /pay [playerid/playername] [money]");
		}
		return 1;
	}
	return 0;
}
It should work properly
EDIT: Just to let you know, ZCMD is faster than strcmp.
Reply
#3

Getting 21 errors when I add thatD:
Reply
#4

Quote:
Originally Posted by aimane65
Посмотреть сообщение
Getting 21 errors when I add thatD:
What errors? You have to add everything I pasted you, not only the OnPlayerCommandText.
Reply
#5

Quote:
Originally Posted by Lucky13
Посмотреть сообщение
What errors? You have to add everything I pasted you, not only the OnPlayerCommandText.
Why are you promoting the use of even more deprecated, outdated and inefficient functions than OnPlayerCommandText? Sure, it's good to know about them, but the use of them should be avoided at all times!

Use this:
PHP код:
public OnPlayerCommandText(playeridcmdtext[]) {
    if(!
strcmp(cmdtext"transfer"true)) {
        new
            
id,
            
amount,
            
cash;
        if(
sscanf(params,"ui"idamount)) 
            return 
SendClientMessage(playerid0xCECECEFF"CMD: /transfer [player] [amount]"); 
        if(!
IsPlayerConnected(id)) 
            return 
SendClientMessage(playerid0xCECECEFF"Player is not connected"); 
        
cash GetPlayerMoney(playerid); 
        if(
amount cash
            return 
SendClientMessage(playerid0xCECECEFF"You do not have that much!"); 
        if(
amount 1
            return 
SendClientMessage(playerid0xCECECEFF"You can not transfer funds under 1!"); 
        
GivePlayerMoney(playerid, -amount); 
        
GivePlayerMoney(idamount); 
        
SendClientMessage(playerid0xCECECEFF"You sent the money."); 
        
SendClientMessage(id0xCECECEFF"You got given money.");
        return 
1;
    }
    return 
0;

Reply
#6

Quote:
Originally Posted by AndySedeyn
Посмотреть сообщение
Why are you promoting the use of even more deprecated, outdated and inefficient functions than OnPlayerCommandText? Sure, it's good to know about them, but the use of them should be avoided at all times!

Use this:
PHP код:
public OnPlayerCommandText(playeridcmdtext[]) {
    if(!
strcmp(cmdtext"transfer"true)) {
        new
            
id,
            
amount,
            
cash;
        if(
sscanf(params,"ui"idamount)) 
            return 
SendClientMessage(playerid0xCECECEFF"CMD: /transfer [player] [amount]"); 
        if(!
IsPlayerConnected(id)) 
            return 
SendClientMessage(playerid0xCECECEFF"Player is not connected"); 
        
cash GetPlayerMoney(playerid); 
        if(
amount cash
            return 
SendClientMessage(playerid0xCECECEFF"You do not have that much!"); 
        if(
amount 1
            return 
SendClientMessage(playerid0xCECECEFF"You can not transfer funds under 1!"); 
        
GivePlayerMoney(playerid, -amount); 
        
GivePlayerMoney(idamount); 
        
SendClientMessage(playerid0xCECECEFF"You sent the money."); 
        
SendClientMessage(id0xCECECEFF"You got given money.");
        return 
1;
    }
    return 
0;

If you would have read what his topic said, you would have know why I used that I even said on my comment that he shouldn't use them: Just to let you know, ZCMD is faster than strcmp.

So please open your eyes before posting something.
Reply
#7

Thanks andy, +rep!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)