/me /ooc
#1

Please give me full code for /me and /ooc with zcmd...

Thank you
+Rep if you helped
Reply
#2

Quote:
Originally Posted by Jermi
Посмотреть сообщение
Please give me full code for /me and /ooc with zcmd...

Thank you
+Rep if you helped
To be honest, just copy and pasting you will learn nothing, So I'll try to help you with simplistic terms

For /me and /ooc you will need to use something called Prox Detector. This is something which calculates your distance between players and localizes your chat. For example, it'd make your /me commands visible only to players near you. Here is a prox detector stock:

Код:
stock ProxDetector(Float:radi, playerid, string[],color) //ready the stock
{
    new Float:x,Float:y,Float:z; //define x,y,z to be later used.
    GetPlayerPos(playerid,x,y,z); //get the position of yourself and store it in x,y,z
    foreach(Player,i) //create a loop for all players.
    {
        if(IsPlayerInRangeOfPoint(i,radi,x,y,z)) //check if players are in radius of you
        {
               if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid)) //check if they're in your virtual world
               {
               SendClientMessage(i,color,string); //send the message
               }
        }
    }
}
You will also need the foreach include by ******. Download it here then place it in Pawno>>Include. Then add this to the top of your script:

Код:
#include <foreach>
The rest is fairly simple.

Код:
CMD:me(playerid, params[]) //use zcmd to initiate command
{
    new
        string[128], //set up a string
        action[100]; //set up the action
        name[100]; //Set up name
    if(sscanf(params, "s[100]", action)) //check if they've typed it properly.
    {
        SendClientMessage(playerid, green, "<System> To use this command, type /me followed by your characters action.");
        return 1;
    }
    else
    {
        GetPlayerName(playerid, name, sizeof(name));
        format(string, sizeof(string), "%s %s", name, action);
        ProxDetector(15, playerid, string, COLOR_PURPLE); //finally send it to nearby players
    }
    return 1;
}
*You will also require Sscanf2, which can be acquired with simple searching if you don't already have it.

/ooc can be done easily if you understand this.
Reply
#3

Perfect and works Thank you +Reped
Reply
#4

and i understand you , your words can let me understand, that is a sure thing
Reply
#5

But wait, There is errors in Line 623
Quote:

L:\Gta San Andreas\Gta San Andreas\Gta San Andreas\Jermi\gamemodes\Gangsta.pwn(623) : warning 217: loose indentation
L:\Gta San Andreas\Gta San Andreas\Gta San Andreas\Jermi\gamemodes\Gangsta.pwn(623) : error 029: invalid expression, assumed zero
L:\Gta San Andreas\Gta San Andreas\Gta San Andreas\Jermi\gamemodes\Gangsta.pwn(623) : error 017: undefined symbol "cmd_me"
L:\Gta San Andreas\Gta San Andreas\Gta San Andreas\Jermi\gamemodes\Gangsta.pwn(623) : error 029: invalid expression, assumed zero
L:\Gta San Andreas\Gta San Andreas\Gta San Andreas\Jermi\gamemodes\Gangsta.pwn(623) : fatal error 107: too many error messages on one line

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


4 Errors.

the CMD line
Reply
#6

Do you have ZCMD?
Reply
#7

Yes and i #include <zcmd>
Reply
#8

Aslo foreach and Sscanf2
Reply
#9

Show me lines 620-626.
Reply
#10

use this.
/ooc & /me

pawn Код:
#include a_samp
#include zcmd

#define COLOR_FADE1 0xE6E6E6E6
#define COLOR_FADE2 0xC8C8C8C8
#define COLOR_FADE3 0xAAAAAAAA
#define COLOR_FADE4 0x8C8C8C8C
#define COLOR_FADE5 0x6E6E6E6E

CMD:me(playerid, params[])
{
    new string[256];
    new pname[MAX_PLAYER_NAME];
    if(isnull(params)) return SendClientMessage(playerid, -1, "Usage: /me [action]");
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "{FFFF00}%s{FFFFFF}: %s", pname, params);
    ProxDetector(15.0, playerid, string, COLOR_FADE1,COLOR_FADE1,COLOR_FADE1,COLOR_FADE1,COLOR_FADE1);
    return 1;
}

CMD:ooc(playerid, params[])
{
    new string[256];
    new pname[MAX_PLAYER_NAME];
    if(isnull(params)) return SendClientMessage(playerid, -1, "Usage: /b [text]");
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "{99FFFF}%s{FFFFFF}: %s ", pname, params);
    ProxDetector(7.0, playerid, string,COLOR_FADE2,COLOR_FADE2,COLOR_FADE2,COLOR_FADE2,COLOR_FADE2);
    return 1;
}


forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:posx, Float:posy, Float:posz;
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
            {
                GetPlayerPos(i, posx, posy, posz);
                tempposx = (oldposx -posx);
                tempposy = (oldposy -posy);
                tempposz = (oldposz -posz);
                if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16))) // If the player is within 16 meters
                {
                    SendClientMessage(i, col1, string);
                }
                else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8))) // within 8 meters
                {
                    SendClientMessage(i, col2, string);
                }
                else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4))) //4 meters
                {
                    SendClientMessage(i, col3, string);
                }
                else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2))) //2 meters
                {
                    SendClientMessage(i, col4, string);
                }
                else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) //1 meter
                {
                    SendClientMessage(i, col5, string);
                }
            }
            else
            {
                SendClientMessage(i, col1, string);
            }
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)