[Tutorial] Adicionar Comando Em Outra CallBack
#1

Eae Galera, Vim Explicar um tutorial bem legal que aprendi!

Jб Dizendo agora, quero falar " Se Gostou Obrigado, Se Nгo Gostou Faзa Melhor "

Comeзando:

esse tutorial ensina como colocar o comando Ex: OnPlayerCommandText(playerid, "/Destrancar");
Bem Vamos la
se vc tem algum comando em DIALOG_STYLE_LIST e que nas primeiras linhas dele esteja assim

pawn Код:
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Comandos do Servidor","/Trancar - Tranca Veiculo\n/Destrancar - Destranca Veiculo\n/Reparar - Repara o Veiculo\n/Pistas - Visualisa Pistas de Drift","OK","Fechar");
e Dai
la em public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
esteja
pawn Код:
if(dialogid == 1){
    if(response){
        if(listitem == 0){

        }
        if(listitem == 1){

        }
        if(listitem == 2){

        }
        if(listitem == 3){

        }
    }
vc coloca embaixo das if(listitem == o exemplo la de cima OnPlayerCommandText(playerid, "/comando"); OLHA:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1){
    if(response){
        if(listitem == 0){
        OnPlayerCommandText(playerid, "/Trancar");
        }
        if(listitem == 1){
        OnPlayerCommandText(playerid, "/Destrancar");
        }
        if(listitem == 2){
        OnPlayerCommandText(playerid, "/Reparar");
        }
        if(listitem == 3){
        OnPlayerCommandText(playerid, "/Pistas");
        }
    }
    else{
    }
}
return 1;
}

O Item do Dialog Vai Fazer a Aзгo Que Esta no Comando Colocado Nas Aspas ""


FIM!!
Reply
#2

1 - Use return
2 - Nгo Precisa economizar linhas, fica feio, idente seu cуdigo.

Exemplo:

pawn Код:
// o Seu:
if(dialogid == 1){
    if(response){
        if(listitem == 0){

        }
        if(listitem == 1){

        }
        if(listitem == 2){

        }
        if(listitem == 3){

        }
    }
// faltou uma chave }
// o Meu :
if(dialogid == 1)
{
    if(response)
    {
        if(listitem == 0)
        {
             return true;
        }
        if(listitem == 1)
        {
             return true;
        }
        if(listitem == 2)
        {
             return true;
        }
        if(listitem == 3)
        {
             return true;
        }
        return true;
    }
    return true;
}
Reply
#3

Simples sу usar a sintaxe OnPlayerCommandText

pawn Код:
OnPlayerCommandText(playerid, "/creditos");
pawn Код:
if(strcmp("/creditus", cmdtext, true) == 0)
{
    OnPlayerCommandText(playerid, "/creditos");
    return 1;
}
Reply
#4

Pode tambйm usar switch, sempre uso em alguns casos

pawn Код:
switch(listitem)
{
    case 0:
    {
    }
    case 1:
    {
    }
    case 2:
    {
    }
    case 3:
    {
    }
}
Tambйm pode usar
pawn Код:
CallLocalFunction("OnPlayerCommandText","is",playerid,"/oi");
Reply
#5

legal vlw pela forзa
Reply
#6

Poderia colocar return.
Poderia identar melhor.
Nгo precisa do else { } jб que ele nгo estб sendo usado.

Cara, isso й apenas uma sintaxe
Reply
#7

Quote:
Originally Posted by lucas24101
Посмотреть сообщение
legal vlw pela forзa
'-' Ironia Detected.
Deveria olhar os tutoriais da board antes de postar.
Reply
#8

como retorno isso para o menu...

pawn Код:
CMD:estacionamento(playerid, params[])
{
#pragma unused params
if(IsPlayerInAnyVehicle(playerid))
{
SetVehiclePos( GetPlayerVehicleID( playerid ), -30.963,1509.681,12.556 );
SetVehicleZAngle( GetPlayerVehicleID( playerid ), 357.7119 );
LinkVehicleToInterior( GetPlayerVehicleID(playerid), 0 );
SetPlayerInterior(playerid,0);
GetPlayerName( playerid, Cppp, MAX_PLAYER_NAME );
format( Cstring, sizeof Cstring , "%s {FFFFFF}Foi Para o Estacionamento [ {FFFF00}/estacionamento {FFFFFF}]", Cppp );
SendClientMessageToAll( 0xFFFF00AA, Cstring );
}
else
{
SetPlayerPos(playerid, -30.963,1509.681,12.556);
SetPlayerFacingAngle(playerid, 357.7119);
SetPlayerInterior(playerid,0);
GetPlayerName( playerid, Cppp, MAX_PLAYER_NAME );
format( Cstring, sizeof Cstring , "%s {FFFFFF}Foi Para o Estacionamento [ {FFFF00}/estacionamento {FFFFFF}]", Cppp );
SendClientMessageToAll( 0xFFFF00AA, Cstring );
}
return true;
}
tentei por essas linhas aqui n foi...

pawn Код:
CMD:estacionamento(playerid, params[])
queria fazer isso para n gastar tantas linhas no GM.. com a msm funзгo...


outra duvida a cada menu tenho que retornar 1? exemplo...

pawn Код:
if(listitem == 0)        
{            
//funзгo
return 1;        
}
if(listitem == 1).....
{            
//funзгo
return 1;        
}
Reply
#9

ApolloRJ
Nгo sei se da pra vocк executar um comando nesse formato diretamente, nunca tentei.

Й aconselhбvel que vocк use return 1, poucas vezes vocк precisa usar o return 0, como na public OnPlayerCommandText e em alguns casos na OnPlayerText.

Com o return 1 entre as chaves do listitem ele nгo vai procurar outros possнveis resultados achando o primeiro resultado, exemplo: o cara clicou no item 2, ele vai procurar o 0, nгo vai ser, o 1 nгo vai ser, o 2 nгo vai ser, se tiver return ele nгo vai procurar o 3, 4, 5 e assim por diante, se nгo tiver ele vai procurar, com o return ele diminui a quantidade de contas que serгo feitas no seu sv.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)