Portal SAMP
[Ajuda] Dúvidas que não querem calar! - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Dúvidas que não querem calar! (/showthread.php?tid=2194)



Dúvidas que não querem calar! - Klaba - 15/03/2022

Na minha jornada de iniciante aqui, eu não conseguir entender algumas coisas... sobre as callbacks (publics) e os return... pra que servem? e como as usar? Já assistir vídeos e não conseguir entender...


Outra, sobre interiores...
Vou lhes dar exemplo:

Eu entro na delegacia em LS, que tem o mesmo interior da de LV, porém em lugar diferente. Como faço para que os jogadores que entrarem neste interior apareçam na delegacia de LS, e os de LV na de LV?


RE: Dúvidas que não querem calar! - Sr.Careca - 16/03/2022

Qualquer public function pode ser chamada por SetTimer, SetTimerEx e CallLocalFunction ou de fora do script com CallRemoteFunction
Uma função normal não poderia ser chamada, ja que antes disso ela precisa ser encaminhada(forward)

Os valores de retorno dependem da ocasião, por exemplo:
Retornar 0 em OnPlayerWeaponShot cancela o disparo do jogador
Retornar 1 em OnDialogResponse impede que outros filterscripts o recebam
Call(Local/Remote)Function tambem retornam o mesmo valor da callback

Voce pode manipular o mundo virtual dos jogadores com SetPlayerVirtualWorld, por exemplo:
Ao entrar na DP de LS: SetPlayerVirtualWorld(playerid, 1);
Ao entrar na DP de LV: SetPlayerVirtualWorld(playerid, 2);
Ao sair de alguma DP: SetPlayerVirtualWorld(playerid, 0);


RE: Dúvidas que não querem calar! - xbruno1000x - 16/03/2022

(15/03/2022 23:58)Klaba Escreveu: Na minha jornada de iniciante aqui, eu não conseguir entender algumas coisas... sobre as callbacks (publics) e os return... pra que servem? e como as usar? Já assistir vídeos e não conseguir entender...


Outra, sobre interiores...
Vou lhes dar exemplo:

Eu entro na delegacia em LS, que tem o mesmo interior da de LV, porém em lugar diferente. Como faço para que os jogadores que entrarem neste interior apareçam na delegacia de LS, e os de LV na de LV?

Explicação mais simplificada possível, para que acabem suas dúvidas:

As callbacks representam os momentos em que as funções serão executadas. Basta você ver a tradução das public's e irá entender, como, por exemplo, OnPlayerEnterVehicle(QuandoPlayerEntraEmVeiculo), OnPlayerConnect(QuandoPlayerConecta), OnGameModeInit(QuandoIniciarGamemode). Então você escolhe o momento e insere os códigos dentro dessa callback. Eu posso inserir um código para mostrar um velocimetro na OnPlayerEnterVehicle, por exemplo.

Retornos:
Return 1 indica que se o código foi lido até ali, foi executado com sucesso e volta pro inicio da leitura.
Return 0 é o oposto, indica que a execução fracassou.

Logo, se você coloca return 0 em um comando, irá aparecer que o comando não existe ou algum erro do tipo.

Mesmo interior sem ninguém se encontrar:
Existem interiores, que são a DP, a Pizzaria, barbearia e etc. E existem os VirtualWorlds. Os VirtualWorlds são uma mecânica feita para impedir que um player entre numa lanchonete em LS e se encontre com o de SF. Então basta setá-los para diferentes mundos virtuais e eles não se encontrarão.


RE: Dúvidas que não querem calar! - Klaba - 16/03/2022

Então, no caso, o que vocês disseram para mim, eu apreendi, muito obrigado!


RE: Dúvidas que não querem calar! - ProKillerPa - 17/03/2022

É Interessante você sempre pesquisar o open.mp sobre cada callback, pois como disseram acima, o return 1; normalmente representa a chamada correta da função, porém existe funções que o return representa outra coisa, como por exemplo:

Na OnPlayerText, o return 0; impede que a mensagem seja enviada, enquanto o return 1; envia a mensagem.
Na OnPlayerDamage( include weapon-config ), o return 0; evita que o dano seja infligido no jogador, enquanto o return 1; conclui o dano.
Na OnPlayerRequestClass, o return 0; impede que o jogador consiga spawnar clicando no botao [< > Spawn], enquanto o return 1; permite.

Etc...

Abraços