[DUV]Retornar Mensagem e Nгo executar Func.
#1

Estou Mexendo aqui, no sistema de PM, ai estб acontecendo o seguinte, se vocк manda a PM para um player que nгo existe, aparece a mensagem que ele nгo existe mais mesmo assim a mensagem й enviada mesmo nгo indo para player nenhum.

CODE

pawn Код:
if(strcmp("/pm", cmd, true) == 0)
    {
    new pName[MAX_PLAYER_NAME+1];
    new iName[MAX_PLAYER_NAME+1];
    new Message[256];
    new gMessage[256];
    new tmp[256];
    tmp = strtok(cmdtext,idx);


    if(!strlen(tmp) || strlen(tmp) > 5) {
    SendClientMessage(playerid,COLOR_WHITE,"/pm [id] [mensagem]");
    return 1;
    }
    new id = strval(tmp);
    gMessage = strrest(cmdtext,idx);

    if(!strlen(gMessage)) {
    SendClientMessage(playerid,COLOR_WHITE,"/pm [id] [mensagem]");
    return 1;
    }

    if(!IsPlayerConnected(id)) {
    SendClientMessage(playerid,COLOR_WHITE,"[INFO] Jogador nгo conectado");
    }

    if(playerid != id) {
    GetPlayerName(id,iName,sizeof(iName));
    GetPlayerName(playerid,pName,sizeof(pName));
    format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
    SendClientMessage(playerid,0xFFCC2299,Message);
    GameTextForPlayer(playerid, "~w~Mensagem enviada", 3000, 0);
    format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
    SendClientMessage(id,0xFFFF22AA,Message);
    GameTextForPlayer(id, "~w~Mensagem recebida", 3000, 0);
    PlayerPlaySound(id,1085,0.0,0.0,0.0);
    printf("PM: %s",Message);
    }
    else
    {
    SendClientMessage(playerid,COLOR_WHITE,"[ERRO] Vocк nгo pode enviar PM para vocк mesmo!");
    }
    return 1;
    }
O outro problema, eu jб vi aqui no fуrum alguйm falar sobre isso, mas nгo me lembro onde foi.

Й o seguinte, como eu faзo para que certa funзгo, nгo seja executada em um certo veiculo, no caso, seria a funзгo da gasolina e velocнmetro, nгo serem executados na bike.
Reply
#2

pawn Код:
if (IsPlayerConnected(playerid))
        {
Isso checarб se esta online ou nгo.
[pawn]
pawn Код:
if(GetVehicleModel(GetPlayerVehicleID(playerid) == ID DOS VEМCULOS);
Reply
#3

Garfield, nenhuma das duas coisas eu consegui.

O da PM, ele jб tem isso, porйm, a mensagem continua sendo enviada.


A do GetVehicleModel... Eu tentei de todos os jeitos. E nгo consegui. Tinha hora que a funзгo nгo era executada em nenhum veiculo e varios outros "bugs"

pawn Код:
public UpdateSpeed()
{

    new Float:x,Float:y,Float:z;
    new Float:distance,value,string[256];
    new Float:health;
    for(new i=0; i<SLOTS; i++)
    {
        if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
        {
            TextDrawDestroy(Speedo[i]);
        }
    }

    for(new i=0; i<SLOTS; i++)
    {
        if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
        {
            GetPlayerPos(i, x, y, z);
            GetVehicleHealth(GetPlayerVehicleID(i), health);
            distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
            value = floatround(distance * 5000);
            if(UpdateSeconds > 1)
            {
                value = floatround(value / UpdateSeconds);
            }
            format(string,sizeof(string),"~g~Velocidade: ~b~%d~w~ KM/H~n~~g~Combustivel:~b~ %i",floatround(value/1000),Petrol[i]);
            Speedo[i] = TextDrawCreate(93.00, 309.00, string);
            TextDrawSetOutline(Speedo[i], 0);
            TextDrawFont(Speedo[i], 3);
            TextDrawSetProportional(Speedo[i], 10);
            TextDrawAlignment(Speedo[i], 2);
            TextDrawShowForPlayer (i, Speedo[i]);
        }
        SavePlayerPos[i][LastX] = x;
        SavePlayerPos[i][LastY] = y;
        SavePlayerPos[i][LastZ] = z;
    }
}
Acima o code do velocimetro, e se alguem tambйm poder me dizer como faz para que o a textdrawn nгo seje mostrada para o passageiro tambйm?
Reply
#4

tira isso :
Код:
TextDrawShowForPlayer (i, Speedo[i]);
ou



isso :
Код:
Speedo[i] = TextDrawCreate(93.00, 309.00, string);
pra PM...

Код:
 if(IsPlayerConnected(id) == 0) {
    SendClientMessage(playerid,COLOR_WHITE,"[INFO] Jogador nгo conectado"); // acho que assim
    }
e isso sobre q a msg vai, nao tem como bloquear mesmo, a menos que tenha um som ne, so exemplo

Код:
 if(IsPlayerConnected(id) == 0) {
    return SendClientMessage(playerid,COLOR_WHITE,"[INFO] Jogador nгo conectado");
    return PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); // bloquear total nao tem como 
    }
Reply
#5

Sobre a PM, creio qeu deu certo, eu testei ele diz que o ID й invбlido e nгo manda a mensagem, agora falta testar com alguйm para ver certinho, jб a do Velocimetro e tal, eu fiz o que vocк falou e nгo deu certo.
Reply
#6

Quote:
Originally Posted by [NWD]Black_Alien
Посмотреть сообщение
Garfield, nenhuma das duas coisas eu consegui.

O da PM, ele jб tem isso, porйm, a mensagem continua sendo enviada.


A do GetVehicleModel... Eu tentei de todos os jeitos. E nгo consegui. Tinha hora que a funзгo nгo era executada em nenhum veiculo e varios outros "bugs"

pawn Код:
public UpdateSpeed()
{

    new Float:x,Float:y,Float:z;
    new Float:distance,value,string[256];
    new Float:health;
    for(new i=0; i<SLOTS; i++)
    {
        if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
        {
            TextDrawDestroy(Speedo[i]);
        }
    }

    for(new i=0; i<SLOTS; i++)
    {
        if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
        {
            GetPlayerPos(i, x, y, z);
            GetVehicleHealth(GetPlayerVehicleID(i), health);
            distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
            value = floatround(distance * 5000);
            if(UpdateSeconds > 1)
            {
                value = floatround(value / UpdateSeconds);
            }
            format(string,sizeof(string),"~g~Velocidade: ~b~%d~w~ KM/H~n~~g~Combustivel:~b~ %i",floatround(value/1000),Petrol[i]);
            Speedo[i] = TextDrawCreate(93.00, 309.00, string);
            TextDrawSetOutline(Speedo[i], 0);
            TextDrawFont(Speedo[i], 3);
            TextDrawSetProportional(Speedo[i], 10);
            TextDrawAlignment(Speedo[i], 2);
            TextDrawShowForPlayer (i, Speedo[i]);
        }
        SavePlayerPos[i][LastX] = x;
        SavePlayerPos[i][LastY] = y;
        SavePlayerPos[i][LastZ] = z;
    }
}
Acima o code do velocimetro, e se alguem tambйm poder me dizer como faz para que o a textdrawn nгo seje mostrada para o passageiro tambйm?
pawn Код:
public UpdateSpeed()
{

    new Float:x,Float:y,Float:z;
    new Float:distance,value,string[256];
    new Float:health;
    for(new i=0; i<SLOTS; i++)
    {
        if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
        {
            TextDrawDestroy(Speedo[i]);
        }
    }

    for(new i=0; i<SLOTS; i++)
    {
        new id = GetPlayerVehicleID(playerid)
        new modelo = GetVehicleModel(id)
        if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && modelo != SEU_MODELO && modelo != SEU_MODELO /*etc*/)
        {
            GetPlayerPos(i, x, y, z);
            GetVehicleHealth(GetPlayerVehicleID(i), health);
            distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
            value = floatround(distance * 5000);
            if(UpdateSeconds > 1)
            {
                value = floatround(value / UpdateSeconds);
            }
            format(string,sizeof(string),"~g~Velocidade: ~b~%d~w~ KM/H~n~~g~Combustivel:~b~ %i",floatround(value/1000),Petrol[i]);
            Speedo[i] = TextDrawCreate(93.00, 309.00, string);
            TextDrawSetOutline(Speedo[i], 0);
            TextDrawFont(Speedo[i], 3);
            TextDrawSetProportional(Speedo[i], 10);
            TextDrawAlignment(Speedo[i], 2);
            TextDrawShowForPlayer (i, Speedo[i]);
        }
        SavePlayerPos[i][LastX] = x;
        SavePlayerPos[i][LastY] = y;
        SavePlayerPos[i][LastZ] = z;
    }
}
Reply
#7

Ok vou testar, jб volto para dizer. Vlw ae manolos.

-------------------------------------------------EDIT

Deu tudo certo, vlw ae manolos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)