[Ajuda] Matrizes
#1

Boa noite pessoal. Meu problema й o seguinte: eu tenho um comando que recebe dois parвmetros (ID e Preзo). Para os receber eu utilizo o sscanf. Para armazenar esses dados eu uso duas variбveis globais com [MAX_PLAYERS]. Elas sгo globais pois eu preciso utilizar esses dados em duas callbacks (a do zcmd e ondialogresponse). Quando eu utilizo essas variбveis eu uso o playerid. Vou exemplificar para melhor entendimento.

if(sscanf(params, "dd", id[playerid], preco[i])) return SendClientMessage(playerid, Laranja, "Use /vender [ID] [Preзo]");

Como viram, eu tenho a variбvel id e entre colchetes playerid. Resultado: IdDoComprador[MeuId]

Com isso estб ocorrendo um pequeno bug no meu sistema. Eu utilizo o comando e as aзхes que devem ser executadas para o outro player, acontecem para mim. Nгo sei se entendem..
- Eu gostaria de saber se existe uma soluзгo para isso, ou outra forma de ser feito este sistema.
- Outra coisa, eu poderia criar algo para fazer o papel do [playerid] ? Por exemplo, idcomprador[comprador].


OBS.: Eu tenho sйrios problemas com ID de players, por isso esta e outra duvidas que jб tive.
OBSІ.: Caso nгo tenham entendido algo, me avise que eu explico novamente. Sу uma coisa, me ajudem kk'
OBSі.: Procuro postar o mнnimo de cуdigo aqui pois prefiro criar a minha lуgica na minha cabeзa, por tanto necessito de explicaзхes
Reply
#2

Nгo entendi, seja mais breve e objetivo na pergunta.
Reply
#3

1 - Tenho um comando: /Vender [ID] [Preзo]
2 - A aзгo que deve acontecer para o outro player, acontece para quem escreveu o comando, sendo que nas funзхes eu utilizo a variбvel que armazena o id do outro player.
Vou dar um exemplo de cуdigo para facilitar o entendimento:

Код:
new venderIDComprador[MAX_PLAYERS]; //Variбvel global
CMD:vendercasa(playerid, params[])
{
    if(sscanf(params, "dd", id[playerid], preco[i])) return SendClientMessage(playerid, Laranja, "Use /vender [ID] [Preзo]");
    ShowPlayerDialog(venderIDComprador[playerid], 12304, DIALOG_STYLE_MSGBOX, "Proposta", string, "Sim", "Nгo");
}
Isto no comando. A dialog й exibida para o player correto, sem problemas.
O problema ocorre aqui:
Код:
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    SetPlayerPos(venderIDComprador[playerid], x, y, z);
    SetPlayerInterior(venderIDComprador[playerid], interior);
    SetPlayerVirtualWorld(venderIDComprador[playerid], vwID);
}
Esta aзгo deveria ocorrer para o outro player, nгo para quem escreveu o comando entende ?
Isso й o problema.
Reply
#4

PHP код:
command(mostrarplayeridparams[]) {
    new 
jogador;
    if(
sscanf(params"u"jogador)) return SendClientMessage(playerid, -1"Coloque o ID!");
    
ShowPlayerDialog(jogador12304DIALOG_STYLE_MSGBOX"Proposta"string"Sim""Nгo");
    return 
1;

Acredito que com isso, vocк irб entender como usar.
Reply
#5

Sim entendo, mas se eu usar desse jeito nгo irб ter aquele problema das funзхes acontecerem apenas para o ID 0 ? Eu jб fiz uma pergunta hб alguns dias sobre isso, e conclui que as variбveis para os players devem ter uma matriz MAX_PLAYERS. Meu tуpico
Se quiser da uma explicaзгo sobre isso, ficaria grato

E outra coisa, se eu usar uma variбvel local, nгo poderei usar ela na ondialogresponse..
Reply
#6

Quote:
Originally Posted by RafaelOsio
Посмотреть сообщение
Sim entendo, mas se eu usar desse jeito nгo irб ter aquele problema das funзхes acontecerem apenas para o ID 0 ? Eu jб fiz uma pergunta hб alguns dias sobre isso, e conclui que as variбveis para os players devem ter uma matriz MAX_PLAYERS. Meu tуpico
Se quiser da uma explicaзгo sobre isso, ficaria grato

E outra coisa, se eu usar uma variбvel local, nгo poderei usar ela na ondialogresponse..
Tambйm nгo lhe entendi direito, mas no caso do Cуdigo do IpsLuan, a Variavel Jogador, passa a ser o playerid no OnDialogResponse.
Reply
#7

Vocк deve criar variбveis distintas para quem recebeu a proposta, nгo esqueзa tambйm da variбvel do valor da oferta.

PHP код:
new playerGaveOffer[MAX_PLAYERS], offerPrice[MAX_PLAYERS]; 
Quando ele digitar o comando, armazene o ID na variбvel que vai armazenar quem estб fazendo a oferta e quem vai receber.

PHP код:
CMD:vendercasa(playeridparams[])
{
    new 
targetidvalue;
    if(
sscanf(params"ud"targetidvalue)) return SendClientMessage(playeridLaranja"Use /vender [ID] [Preзo]");
    
playerGaveOffer[targetid] = playerid;
    
offerPrice[targetid] = value;
    new 
string[128], offerName[MAX_PLAYER_NAME]; 
    
GetPlayerName(playeridofferNamesizeof(offerName));
    
format(stringsizeof(string), "%s te ofereceu a casa dele por $%d.\nDeseja aceitar?"offerNamevalue);
    
ShowPlayerDialog(targetid12304DIALOG_STYLE_MSGBOX"Proposta"string"Sim""Nгo");
    return 
1;

No final disto tudo, й sу obter o valor dessas variбveis quando o dialog for respondido.


PHP код:
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid) {
        case 
12304: {
            if(!
response) return ResetHouseOfferVars(playerid);
            if(
GetPlayerMoney(playerid) < offerPrice[playerid]) {
                
SendClientMessage(playerid, -1"Vocк nгo possui dinheiro suficiente!");
                return 
ResetHouseOfferVars(playerid);
            }
            
SetPlayerPos(playeridxyz);
            
SetPlayerInterior(playeridinterior);
            
SetPlayerVirtualWorld(playeridvwID);
            
SendClientMessage(playerid, -1"Vocк comprou uma casa de um player com sucesso!");
            return 
1;
        }
    }
    return 
1;
}
function 
ResetHouseOfferVars(playerid) {
    
playerGaveOffer[playerid] = 0;
    
offerPrice[playerid] = 0;
    return 
1;

Fiz este mesmo comando em forma de dialog no LHouse, caso queira estudar.
Reply
#8

Olhe pelo meu cуdigo que vocк vai entender...
O 'jogador' estб substituindo o playerid.
Se fosse mudar algum valor da conta do 'jogador', vocк poderia usar assim...
PHP код:
Dados[jogador][Emprego] = 1
Reply
#9

Claro, entendi, entendi.. E Lуs, quando iniciei esse sistema eu tentei usar o seu FS como base, mas por ser muito complexo nгo entendi muito kkk
Mas muito obrigado a todos por me ajudar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)