[Pedido] tutorial de como usar SetTimerEx
#1

Pessoal, podem me ensinar a usar o SetTimerEx?
Reply
#2

Cara SetTimerEx й nada mais que um "temporizador" que passa parвmetros...


exemplo:
pawn Код:
SetTimerEx("minha_public", 1000, false, "s", "hello");

forward minha_public(str[]); public minha_public(str[]){
     printf(str);
}
Reply
#3

forward suafuncao(playerid);

SetTimerEx("suafuncao",1000,false,"i",playerid); // o time vocк coloca onde quiser
/*
Vocк pode usar o time com mais parametros nгo apenas com playerid
*/

public suafuncao(playerid)
{
SendClientMessage(playerid,-1,#Seu timeEX terminou);
}
Reply
#4

Ok, isso pode ser utilizado para transferir id de players para outra public sem o auxilio de uma variavel global?

@EDIT

ex: quero passar o valor de "Player" do OnPlayerCommandText para OnDialogResponse. Da pra usar SetTimerEx?? Como??
Reply
#5

Up!!
Reply
#6

Quote:
Originally Posted by Foodinha
Посмотреть сообщение
Up!!
Amigo isso nгo й permitido, double-post, leia as regras!

Espere por 24 horas, vocк acabou de responder o tуpico nгo tem necessidades de flood...
Vocк tambйm pode utilizar o botгo para editar/deletar sua mensagem/postagem.

@OnTopic: Quais sгo suas duvidas sobre SetTimer ??

@valdirdd: Use [*pawn][/*pawn] sem o * para colocar seu cуdigo em uma caixa de texto com a sintaxe, highlight da linguagem PAWN.
Reply
#7

Ok, deslcumpe-me




Minha duvida й: posso usar SetTimerEx para passar o valor de uma variavel do OnPlayerCommandText para a OnDiaogResponse? Se sim, como?
Reply
#8

seria mais ou menos assim:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[]){

    if(!strcmp(cmdtext, "/meucmd", true)){

        SetPVarInt(playerid, "Minhavariavel", 50);
        return true;
    }
    return true;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

    if(dialogid == ID_SEU_DIALOG){
        if(response){
            printf("Vallor й: %i", GetPVarInt(playerid, "Minhavariavel"));

            DeletePVar(playerid, "Minhavariavel");
        }
    }
    return true;
}
Para textos seria mais ou menos assim:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[]){

    if(!strcmp(cmdtext, "/meucmd", true)){


        // Criamos uma "PVar" (player variable) e armazenamos a seguinte frase "Olб, sou SuYaNw Lindo"
        SetPVarString(playerid, "Minhavariavel", "Olб, sou SuYaNw Lindo");
        return true;
    }
    return true;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

    // Quando a callback "OnDialogResponse" for chamada, acontecerб oque estiver abaixo:

    // Caso o id em questгo for i gual do ID_SEU_DIALOG, executarб o codigo abaixo
    if(dialogid == ID_SEU_DIALOG){

        // Caso ele clicou no primeiro botгo
        if(response){


            // Criamos uma array tendo vaga para 49 caracteres
            // Muitos programadores erram nesta parte, porquк a contagem decimal comeзa do 1, porйm
            // na programaзгo comeзa do 0...
            new
                string[50]

            ;


            // Pegamos o valor da PVar "Minhavariavel" e passamos para "string" que criamos acima.
            GetPVarString(playerid, "Minhavariavel", string, 50);


            // Exibimos a string no console do servidor
            printf("Quem й vocк?\n%s", string);


            // Deletamos a PVar.
            DeletePVar(playerid, "Minhavariavel");
        }
    }
    return true;
}
Reply
#9

Quote:
Originally Posted by Foodinha
Посмотреть сообщение
Ok, deslcumpe-me




Minha duvida й: posso usar SetTimerEx para passar o valor de uma variavel do OnPlayerCommandText para a OnDiaogResponse? Se sim, como?
Sim, como o Suyawn disse, й possнvel passar parвmetros.

pawn Код:
#include <a_samp>

new my_value[MAX_PLAYERS];


#define DIALOG_ID 47
#define DIALOG_LINE_ID 47

main()
{
    print("\n----------------------------------");
    print(" test value by reference!");
    print("----------------------------------\n");
    OnPlayerCommandText(0,"/mycommand");
}
public OnGameModeInit(){return 1;}
public OnGameModeExit(){return 1;}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
        print("My command started!");
       

        my_value[playerid] = 58;
        SetTimerEx("OnDialogResponse", 2500, true, "dddds", playerid, DIALOG_ID, 1, DIALOG_LINE_ID, "a");
        return 1;
    }
   
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_ID) {
        if(response) {
            switch(listitem) {
                case 0..5: print("Vocк clicou entre 0-5");
                case DIALOG_LINE_ID: printf("Responde a linha 6 ^^ Valor passado:%d", my_value[playerid]);
            }

        } else return false;
        return 1;
    }
    return 1;
}
Reply
#10

Obrigado, +rep para os 2
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)