[Solved] See the other player's weapons (Only tested on my own)
#1

Hey all, I had some errors with undefined symbol tmp ReturnUser etc etc, This is fixed now but then I get different errors which pisses me off.
I have this:

On top of script under forwards:
pawn Код:
new cmd[128];
new tmp[128];
new giveplayername[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
new ReturnUser;
new string[128];
I did this to define them.

Under the command:
pawn Код:
if(strcmp(cmd, "/pweapons", true) == 0) {
if(!strlen(tmp))
{
SendClientMessage(playerid, orange, "USAGE: /pweapons [playerid/name]");
return 1;
}
new giveplayerid = ReturnUser(tmp);
if(giveplayerid != INVALID_PLAYER_ID)
{
new bullets[12];
new weapons[12];
new weapname[12][20];
for(new i = 0; i < 12; i++)
{
GetPlayerWeaponData(giveplayerid, i+1, weapons[i], bullets[i]);
GetWeaponName(weapons[i], weapname[i], 20);
}
GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
format(string,sizeof(string),"    |-    %s's Weapons    -|",giveplayername);
SendClientMessage(playerid,red,string);
format(string, sizeof(string),"%s(0) - %s(%d) - %s(%d) - %s(%d) - %s(%d) - %s(%d)",weapname[0],weapname[1],bullets[1],weapname[2],bullets[2],weapname[3],bullets[3],weapname[4],bullets[4],weapname[5],bullets[5]);
SendClientMessage(playerid,white,string);
format(string,sizeof(string),"%s(%d) - %s(%d) - %s(%d) - %s(0) - %s(0) - %s(0)",weapname[6],bullets[6],weapname[7],bullets[7],weapname[8],bullets[8],weapname[9],weapname[10],weapname[11]);
SendClientMessage(playerid,white,string);
return 1;
}
The errors + a warning that needs to be fixed:
Код:
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(178) : error 012: invalid function call, not a valid address
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(178) : warning 215: expression has no effect
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(178) : error 001: expected token: ";", but found ")"
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(178) : error 029: invalid expression, assumed zero
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(178) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.
I have to be sure 100% is correct because I'm scripting for a server. I only have my own script I started with. I have like 4 backups (lol) In case I don't get some shit fixed.

Can anybody help me out?
I hope I get an answer soon.

Kind Regards
- speedruntrainer

EDIT: Line 178 is:
pawn Код:
new giveplayerid = ReturnUser(tmp);
Reply
#2

Which is line 178?
Reply
#3

This is line 178:
pawn Код:
new giveplayerid = ReturnUser(tmp);
I can't remove this. If I do I think I will be blind...
Reply
#4

I have looked deep into the code but I really can't see the problem, And it's fucking hard to solve :/
Forget something or remove something = BAM! 20+errors and warnings. It reall pisses me off....
Reply
#5

Do you have ReturnUser function in your script? If not then copy this:

pawn Код:
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
    new pos = 0;
    while (text[pos] < 0x21) // Strip out leading spaces
    {
        if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
        pos++;
    }
    new userid = INVALID_PLAYER_ID;
    if (IsNumeric(text[pos])) // Check whole passed string
    {
        // If they have a numeric name you have a problem (although names are checked on id failure)
        userid = strval(text[pos]);
        if (userid >=0 && userid < MAX_PLAYERS)
        {
            if(!IsPlayerConnected(userid))
            {
                /*if (playerid != INVALID_PLAYER_ID)
                {
                    SendClientMessage(playerid, 0xFF0000AA, "User not connected");
                }*/

                userid = INVALID_PLAYER_ID;
            }
            else
            {
                return userid; // A player was found
            }
        }
        /*else
        {
            if (playerid != INVALID_PLAYER_ID)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
            }
            userid = INVALID_PLAYER_ID;
        }
        return userid;*/

        // Removed for fallthrough code
    }
    // They entered [part of] a name or the id search failed (check names just incase)
    new len = strlen(text[pos]);
    new count = 0;
    new name[MAX_PLAYER_NAME];
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i))
        {
            GetPlayerName(i, name, sizeof (name));
            if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
            {
                if (len == strlen(name)) // Exact match
                {
                    return i; // Return the exact player on an exact match
                    // Otherwise if there are two players:
                    // Me and MeYou any time you entered Me it would find both
                    // And never be able to return just Me's id
                }
                else // Partial match
                {
                    count++;
                    userid = i;
                }
            }
        }
    }
    if (count != 1)
    {
        if (playerid != INVALID_PLAYER_ID)
        {
            if (count)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
            }
            else
            {
                SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
            }
        }
        userid = INVALID_PLAYER_ID;
    }
    return userid; // INVALID_USER_ID for bad return
}
Reply
#6

EDIT: The 19 errors are caused by me lol
Reply
#7

Ok, I'm almost there, now I have 4 errors.
This is my code:

Under forwards:
pawn Код:
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
    new pos = 0;
    while (text[pos] < 0x21) // Strip out leading spaces
    {
        if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
        pos++;
    }
    new userid = INVALID_PLAYER_ID;
    if (IsNumeric(text[pos])) // Check whole passed string
    {
        // If they have a numeric name you have a problem (although names are checked on id failure)
        userid = strval(text[pos]);
        if (userid >=0 && userid < MAX_PLAYERS)
        {
            if(!IsPlayerConnected(userid))
            {
                /*if (playerid != INVALID_PLAYER_ID)
                {
                    SendClientMessage(playerid, 0xFF0000AA, "User not connected");
                }*/

                userid = INVALID_PLAYER_ID;
            }
            else
            {
                return userid; // A player was found
            }
        }
        /*else
        {
            if (playerid != INVALID_PLAYER_ID)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
            }
            userid = INVALID_PLAYER_ID;
        }
        return userid;*/

        // Removed for fallthrough code
    }
    // They entered [part of] a name or the id search failed (check names just incase)
    new len = strlen(text[pos]);
    new count = 0;
    new name[MAX_PLAYER_NAME];
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i))
        {
            GetPlayerName(i, name, sizeof (name));
            if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
            {
                if (len == strlen(name)) // Exact match
                {
                    return i; // Return the exact player on an exact match
                    // Otherwise if there are two players:
                    // Me and MeYou any time you entered Me it would find both
                    // And never be able to return just Me's id
                }
                else // Partial match
                {
                    count++;
                    userid = i;
                }
            }
        }
    }
    if (count != 1)
    {
        if (playerid != INVALID_PLAYER_ID)
        {
            if (count)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
            }
            else
            {
                SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
            }
        }
        userid = INVALID_PLAYER_ID;
    }
    return userid; // INVALID_USER_ID for bad return
}

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;
}
Under OnPlayerCommandText:
pawn Код:
new cmd[128];
new idx;
new tmp[128];
cmd = strtok(cmdtext,idx);
Under the command /pweapons:
pawn Код:
if(strcmp(cmd, "/pweapons", true) == 0) {
if(!strlen(tmp))
{
SendClientMessage(playerid, orange, "USAGE: /pweapons [playerid/name]");
return 1;
}
new giveplayerid = ReturnUser(tmp);
if(giveplayerid != INVALID_PLAYER_ID)
{
new bullets[12];
new weapons[12];
new weapname[12][20];
for(new i = 0; i < 12; i++)
{
GetPlayerWeaponData(giveplayerid, i+1, weapons[i], bullets[i]);
GetWeaponName(weapons[i], weapname[i], 20);
}
GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
format(string,sizeof(string),"    |-    %s's Weapons    -|",giveplayername);
SendClientMessage(playerid,red,string);
format(string, sizeof(string),"%s(0) - %s(%d) - %s(%d) - %s(%d) - %s(%d) - %s(%d)",weapname[0],weapname[1],bullets[1],weapname[2],bullets[2],weapname[3],bullets[3],weapname[4],bullets[4],weapname[5],bullets[5]);
SendClientMessage(playerid,white,string);
format(string,sizeof(string),"%s(%d) - %s(%d) - %s(%d) - %s(0) - %s(0) - %s(0)",weapname[6],bullets[6],weapname[7],bullets[7],weapname[8],bullets[8],weapname[9],weapname[10],weapname[11]);
SendClientMessage(playerid,white,string);
return 1;
}
The errors:
Код:
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(290) : error 017: undefined symbol "giveplayername"
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(290) : error 017: undefined symbol "giveplayername"
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(290) : error 029: invalid expression, assumed zero
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(290) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.
EXTRA IMPORTANT NOTES AND ERRORS:
I can't simply #define or new it because:

If I #define it, these errors comes up:
Код:
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(291) : error 029: invalid expression, assumed zero
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(291) : error 035: argument type mismatch (argument 2)
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(291) : error 020: invalid symbol name ""
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(291) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.
If I use new giveplayername; then these erros comes up:
Код:
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(291) : error 035: argument type mismatch (argument 2)
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(291) : error 035: argument type mismatch (argument 2)
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(292) : error 017: undefined symbol "string"
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(292) : error 017: undefined symbol "string"
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(292) : error 029: invalid expression, assumed zero
C:\Users\Nel\Desktop\Mijn spullen\GTA Games\Server test gta\filterscripts\Test.pwn(292) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


6 Errors.
I really don't get it, can someone help me please?
IT REALLY PISSES ME OFF but I really want to use it.

- speedruntrainer
Reply
#8

Код:
if(strcmp(cmd, "/pweapons", true) == 0) {
	tmp = strtok(cmdtext,idx);
	if(!strlen(tmp)) return SendClientMessage(playerid, orange, "USAGE: /pweapons [playerid/name]");
	new giveplayerid = ReturnUser(tmp);
	if(giveplayerid != INVALID_PLAYER_ID)
	{
		new bullets[12];
		new weapons[12];
		new weapname[12][20];
		for(new i = 0; i < 12; i++)
		{
			GetPlayerWeaponData(giveplayerid, i, weapons[i], bullets[i]);
			GetWeaponName(weapons[i], weapname[i], 20);
		}
		new giveplayername[24];
		GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
		format(string,sizeof(string),"    |-    %s's Weapons    -|",giveplayername);
		SendClientMessage(playerid,red,string);
		format(string, sizeof(string),"%s(0) - %s(%d) - %s(%d) - %s(%d) - %s(%d) - %s(%d)",weapname[0],weapname[1],bullets[1],weapname[2],bullets[2],weapname[3],bullets[3],weapname[4],bullets[4],weapname[5],bullets[5]);
		SendClientMessage(playerid,white,string);
		format(string,sizeof(string),"%s(%d) - %s(%d) - %s(%d) - %s(0) - %s(0) - %s(0)",weapname[6],bullets[6],weapname[7],bullets[7],weapname[8],bullets[8],weapname[9],weapname[10],weapname[11]);
		SendClientMessage(playerid,white,string);
	}else SendClientMessage(playerid,white,"SERVER: ID not connected !");
	return 1;
}
Reply
#9

Solved. The
pawn Код:
else(SendClientMessage,playerid,white, "SERVER: ID not connected");
Needs to be removed at all. Also, tmp = strtok(cmdtext,idx); had to be added under OnPlayerCommandText.

I took a look at some other scripts which helped me out a bit.

Finally it works, I tested it on my own. had some bugs but they are fixed now .

The code:
Under OnplayerCommandText:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[128];
new idx;
new tmp[128];
cmd = strtok(cmdtext, idx);
The ReturnUser code (scroll up a few posts)
This code is under my forwards.

And the command:
pawn Код:
if(strcmp(cmd, "/pweapons", true) == 0) {
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /pweapons [playerid/name]");
new giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,red, "Invalid Player ID.");
{
new bullets[12], weapons[12], weapname[12][20];
for(new i = 0; i < 12; i++)
{
GetPlayerWeaponData(giveplayerid, i, weapons[i], bullets[i]);
GetWeaponName(weapons[i], weapname[i], 20);
}
new string[128];
new giveplayername[24];
GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
format(string,sizeof(string),"Weapons of %s.",giveplayername);
SendClientMessage(playerid,red,string);
format(string, sizeof(string),"%s(0) - %s(%d) - %s(%d) - %s(%d) - %s(%d) - %s(%d)",weapname[0],weapname[1],bullets[1],weapname[2],bullets[2],weapname[3],bullets[3],weapname[4],bullets[4],weapname[5],bullets[5]);
SendClientMessage(playerid,COLOR_WHITE,string);
format(string,sizeof(string),"%s(%d) - %s(%d) - %s(%d) - %s(0) - %s(0) - %s(0)",weapname[6],bullets[6],weapname[7],bullets[7],weapname[8],bullets[8],weapname[9],weapname[10],weapname[11]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
return 1;
}
Result:
Код:
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase
No picture proof yet.

Thanks all.
- speedruntrainer
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)