13/07/2023 20:53
(Esta mensagem foi modificada pela última vez a: 13/07/2023 21:11 por ViniBicalho17.)
(13/07/2023 13:16)xbruno1000x Escreveu: SetPVar e GetPVar são funções feitas para justamente não serem necessárias variáveis. Use essas funções sem esse monte de variáveis e public's.
Mas essa public eu preciso usar, certo? Tentei usar sem ela e não deu certo.
Código:
forward GetPlayerRadioUse(playerid);
public GetPlayerRadioUse(playerid)
{
return RadioUse[playerid];
}
Vou explicar o que eu fiz:
-----Na Game Mode--------
Código:
new RadioUse[MAX_PLAYERS];
//Aqui é o Inventario
if(item == 19942) // Radio
{
printf("Radio Inv: Get RadioUse %d",GetPlayerRadioUse(playerid)); //Printf para verificar o valor que vem do /radiooff, aqui eu nao consigo puxar o valor manipulado de lá.
if(GetPlayerRadioUse(playerid) == 1) return SendClientMessage(playerid, -1, "Você já esta usando um Radio, para desligar digite:/radiooff.");
//restante codigo....
RadioUse[playerid] = 1;
SetPVarInt(playerid, "RadioUse", RadioUse[playerid]); //aqui tá certinho, consigo enviar o valor pro FS
return 1;
}
forward GetPlayerRadioUse(playerid);
public GetPlayerRadioUse(playerid)
{
return RadioUse[playerid];
}
-------No FS:---------------
Código:
forward GetPlayerRadioUse(playerid);
public GetPlayerRadioUse(playerid)
{
return GetPVarInt(playerid, "RadioUse");
}
CMD:radiooff(playerid)
{
if(GetPlayerRadioUse(playerid) == 0) return SendClientMessage(playerid, -1, "Seu Rádio Comunicador já está desligado.");
//restante comando...
SetPVarInt(playerid, "RadioUse", 0);
printf("/radioff: Set RadioUse %d",GetPlayerRadioUse(playerid)); //Deu certo (O problema é que nao consigo mandar esse valor lá pra GM)
return 1;
}
CMD:radioon(playerid, params[])
{
new rfq;
printf("/radioon: Get RadioUse %d",GetPlayerRadioUse(playerid)); //printf para verificar valor da variavel (Deu certo)
if(GetPlayerRadioUse(playerid) == 0) return SendClientMessage(playerid, -1, "Rádio não equipado! Para equipar use no seu inventario.");
if(sscanf(params, "d", rfq))
{
return SendClientMessage(playerid, -1, "Use: /radioon [frequencia 0 a 99.]");
}
//restante codigo....
return 1;
}
Consegui resolver colocando mais uma public, agora deu certinho. Só nao sei se tem algum jeito mais limpo e mais pratico.
No FS:
Código:
forward SetPlayerRadioUse(playerid);
public SetPlayerRadioUse(playerid)
{
return SetPVarInt(playerid, "RadioUse",GetPlayerRadioUse(playerid));
}
Na GM:
Código:
forward SetPlayerRadioUse(playerid);
public SetPlayerRadioUse(playerid)
{
return GetPVarInt(playerid, "RadioUse");
}
Assim, deu certo !