[Ajuda] Dъvidas Curtas #1

Код:
CMD:camera(playerid)
{
    SetCameraBehindPlayer(playerid);
    return 1;
}
Reply

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Код:
CMD:camera(playerid)
{
    SetCameraBehindPlayer(playerid);
    return 1;
}
Nгo,nгo assim , bro.
Digo tipo
pawn Код:
CMD:camera(playerid,params[])
{
InterpolateCameraPos(playerid, 187.600982, -1791.727050, 119.087432, 193.731567, -1789.235473, 118.845245, 5000);
InterpolateCameraLookAt(playerid, 189.006942, -1790.279785, 114.512641, 195.057144, -1788.512817, 114.078620, 5000);
SetCameraBehindPlayer(playerid);
return 1;
}
Da forma que coloquei agora com a funзгo abaixo do Interpolate,o movimento nгo aparece, como faзo para deixa-lo tudo apenas no comando? Assim que o movimento terminar voltar para "CameraBehind"?
Reply

Quote:
Originally Posted by RockstarL
Посмотреть сообщение
Nгo,nгo assim , bro.
Digo tipo
pawn Код:
CMD:camera(playerid,params[])
{
InterpolateCameraPos(playerid, 187.600982, -1791.727050, 119.087432, 193.731567, -1789.235473, 118.845245, 5000);
InterpolateCameraLookAt(playerid, 189.006942, -1790.279785, 114.512641, 195.057144, -1788.512817, 114.078620, 5000);
SetCameraBehindPlayer(playerid);
return 1;
}
Da forma que coloquei agora com a funзгo abaixo do Interpolate,o movimento nгo aparece, como faзo para deixa-lo tudo apenas no comando? Assim que o movimento terminar voltar para "CameraBehind"?
Pra comeзar vc nгo estб usando parвmetros, entгo remova.
Outro detalhe й que vc nгo raciocinou no que seu cуdigo estб fazendo, olhe:

InterpolateCameraPos -> primeira aзгo
InterpolateCameraLookAt -> segunda aзгo
SetCameraBehindPlayer -> terceira aзгo

O comando vai executar as trкs funзхes uma apуs a outra seguindo a ordem colocada por vc.
Acredito que criar um timer sem repetiзгo e dentro deste colocar a funзгo SetCameraBehindPlayer, mas claro que deve calcular o tempo necessбrio para execuзгo do movimento da cвmera atй o final.
Reply

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Pra comeзar vc nгo estб usando parвmetros, entгo remova.
Outro detalhe й que vc nгo raciocinou no que seu cуdigo estб fazendo, olhe:

InterpolateCameraPos -> primeira aзгo
InterpolateCameraLookAt -> segunda aзгo
SetCameraBehindPlayer -> terceira aзгo

O comando vai executar as trкs funзхes uma apуs a outra seguindo a ordem colocada por vc.
Acredito que criar um timer sem repetiзгo e dentro deste colocar a funзгo SetCameraBehindPlayer, mas claro que deve calcular o tempo necessбrio para execuзгo do movimento da cвmera atй o final.
Й nуzes, brigadгo.
Reply

duvida rapida
porque as vezes quando me dгo rep um quadrado fica azul e nao verde e nao conta nas minhas reputaзхes?
Reply

Te dei +3 rep. Ta mais feliz agora?
Reply

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Te dei +3 rep. Ta mais feliz agora?
Eu tou triste, poderia me dar 3 tbm?
Reply

@moura98 Por que o membro que te deu reputaзгo tem menos de 100 posts.
Reply

Alguйm poderia fazer o um cуdigo em zcmd o seguinte:

/admins ae aparecia o lista de admins online.
Reply

Quote:
Originally Posted by OverKiller
Посмотреть сообщение
Alguйm poderia fazer o um cуdigo em zcmd o seguinte:

/admins ae aparecia o lista de admins online.
altere as variaveis para a sua.

PHP код:
CMD:admins(playeridparams[])
{
    new 
string[64], name[24];
    for(new 
iMAX_PLAYERSi++)
    {
        if(
IsPlayerConnected(i))
        {
            if(
PlayerInfo[i][admin] == || PlayerInfo[i][admin] == || PlayerInfo[i][admin] == 3)
            {
                
GetPlayerName(iname24);
                
format(string64"%s\n"name);
                
ShowPlayerDialog(playeriddialog_adminsDIALOG_STYLE_MSGBOX"{FFA500}Administradores Online: {FFFFFF}"string"OK","");
            }
            else
            {
                 
ShowPlayerDialog(playeriddialog_adminsDIALOG_STYLE_MSGBOX"{FFA500}Administradores Online: {FFFFFF}","{FF0000}Nao tem Administradores Online!{FFFFFF}""OK","");
            }
          }
    }
    return 
1;

Reply

Quote:
Originally Posted by moura98
Посмотреть сообщение
altere as variaveis para a sua.

PHP код:
CMD:admins(playeridparams[])
{
    new 
string[64], name[24];
    for(new 
iMAX_PLAYERSi++)
    {
        if(
IsPlayerConnected(i))
        {
            if(
PlayerInfo[i][admin] == || PlayerInfo[i][admin] == || PlayerInfo[i][admin] == 3)
            {
                
GetPlayerName(iname24);
                
format(string64"%s\n"name);
                [
COLOR="Red"]ShowPlayerDialog(playeriddialog_adminsDIALOG_STYLE_MSGBOX"{FFA500}Administradores Online: {FFFFFF}"string"OK","");[/COLOR]
            }
            else
            {
                 [
COLOR="red"]ShowPlayerDialog(playeriddialog_adminsDIALOG_STYLE_MSGBOX"{FFA500}Administradores Online: {FFFFFF}","{FF0000}Nao tem Administradores Online!{FFFFFF}""OK","");[/COLOR]
            }
          }
    }
    return 
1;

Colocar ShowPlayerDialog em loop?
Jб viu o que isso resulta?
Reply

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Colocar ShowPlayerDialog em loop?
Jб viu o que isso resulta?
nao, estou sem tester para testar meus sistemas, vlw por avisar vou tentar melhorar este comando!
Reply

Quote:
Originally Posted by moura98
Посмотреть сообщение
nao, estou sem tester para testar meus sistemas :/
Vamos entender a lуgica de um sistema desses:
Код:
CMD:admins(playerid, params[]) 
{ 
    new 
		string[400], // responsavel por armazenar os nomes concatenados dos admins
		name[24], // responsavel por armazenar o nome dos admins
		AdminCount // responsavel por contar os admins online
	; 
	
    for(new i; i < MAX_PLAYERS; i++) // loop
    { 
        if(IsPlayerConnected(i)) // dб continuidade somente nos que estгo online
        { 
            if(PlayerInfo[i][admin] > 0 && !IsPlayerAdmin(i)) // Verifica se й admin e nгo RCON
            { 
                GetPlayerName(i, name, 24); // geta o nome
                strcat(string, "[ADMIN] %s\n", name); // faz a concatenaзгo
				++ AdminCount; // Conta os admins online
            }
			else if(IsPlayerAdmin(i)) // Verifica se й RCON independente se for admin ou nгo.
			{
				GetPlayerName(i, name, 24);  // geta o nome
				strcat(string, "[RCON] %s\n", name);  // faz a concatenaзгo
				++ AdminCount; // Conta os admins online
            } 
		}
    }
	
	if(AdminCount > 0) ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}", string, "OK",""); // se houver admins on
	else ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}", "Nгo hб admins online no momento!", "OK",""); // se nгo houver admins on
	
    return 1; 
}
Nгo testei, mas tenho 99% de certeza que funciona.
Reply

Quote:
Originally Posted by AzulimZW
View Post
Fiquei muito tempo sem programar Pawn, cerca de 2 anos. Porйm agora estou voltando e queria saber quais estгo sendo os processadores de comandos mais rбpidos atualmente? (antigamente eu usava o y_cmd)
E qual tб sendo a melhor include de salvamento para banco de dados, mudou alguma coisa na sscanf? Vou criar uma gamemode do 0 e quero saber dos mais atuais.
Processador de comando mais rбpido creio que seja Pawn.CMD.
Banco de dados й SQLite ou MySQL.
sscanf mudou pouca coisa.

Depois dб uma olhada nessa GM: https://sampforum.blast.hk/showthread.php?tid=634087
Utilizei as includes / plugins mais atualizadas.
Reply

Alguйm jб testou o novo MySQL Workbench? Parece ser bacana!
Fica a dica aн a quem curte novidade e/ou quem gosta de trabalhar com MySQL...

http://www.devmedia.com.br/introduca...orkbench/25939

@OFF

Desculpa, errei o tуpico.
Reply

Estou com erro neste cуdigo. A tabela de itens que crio parece estar certa.

Code:
new TabelaItens[][2][64] =
{
 {355, "AK-47"}
};

public OnGameModeInit()
{
 new Texto[32];
 format(Texto,sizeof(Texto),"%i\n%s", TabelaItens[0][0], TabelaItens[0][1]);
 Create3DTextLabel(Texto, -1, 0.0, 0.0, 0.0, 25.0, 0 ,0);
 CreatePickup(TabelaItens[0][0], 1, 0.0, 0.0, 0.0, 0);
 return 1;
}
O problema й o erro na hora de criar o pickup , ele nгo reconhece o "TabelaItens[0][0]" como um ID de arma (Modelo).
Resultando nesse erro.

Code:
error 035: argument type mismatch (argument 1)
Alguйm me indica a correзгo para o erro por favor.
Reply

Quote:
Originally Posted by FanonRiouDiou
View Post
Estou com erro neste cуdigo. A tabela de itens que crio parece estar certa.

Code:
new TabelaItens[][2][64] =
{
 {355, "AK-47"}
};

public OnGameModeInit()
{
 new Texto[32];
 format(Texto,sizeof(Texto),"%i\n%s", TabelaItens[0][0], TabelaItens[0][1]);
 Create3DTextLabel(Texto, -1, 0.0, 0.0, 0.0, 25.0, 0 ,0);
 CreatePickup(TabelaItens[0][0], 1, 0.0, 0.0, 0.0, 0);
 return 1;
}
O problema й o erro na hora de criar o pickup , ele nгo reconhece o "TabelaItens[0][0]" como um ID de arma (Modelo).
Resultando nesse erro.

Code:
error 035: argument type mismatch (argument 1)
Alguйm me indica a correзгo para o erro por favor.
PHP Code:
new TabelaItens[][2][64] =
{
 {
355"AK-47"}
}; 
O cуdigo acima vai criar uma array de 3 dimensхes, a primeira dimensгo com 1 cйlulas somente, a segunda com duas dimensхes e a terceira com 64.

Ao criar o seu cуdigo ao acessar o нndice 0 da segunda dimensгo vocк vai encontrar a terceira com 64 cйlulas e nгo somente sу uma como vocк pensou ao fazer este cуdigo.

dforum.png

Resumindo dentro da segunda dimensгo no нndice 0 (TabelaItens[0][0]) existe uma segunda array com 64 cйlulas e isso vai existir em todos o нndices existentes na segunda dimensгo.


Para contornar isso existe os enumeradores que permitem "criar" uma array dentro de um нndice.

PHP Code:
enum e{
    
numero,
    
string[64]
}
new 
TabelaItens[][e] =
{
    {
355"AK-47"}
};
//Exemplo
printf("%d : %s"TabelaItens[0][numero], TabelaItens[0][string]); 
//Saнda: 355 : AK-47 
O cуdigo acima nada mais do que cria uma array com 2 dimensхes a primeira com uma cйlula e a segunda com 65 cйlulas, a primeira pertencendo a numero e de 1 a 64 pertencendo a string.

Espero que tenha entendido, mas caso nгo entenda pois minha explicaзгo esta meio confusa brinque com arrays e enumeradores:
PHP Code:
enum e{
    
numero,
    
string[64]
}
new 
TabelaItens[][e] =
{
    {
355"AK-47"}
};
new 
TabelaItens2[][2][64] =
{
    {
355"AK-47"}
};
main(){
    
printf("%d %c%c"TabelaItens[0][e:0], TabelaItens[0][e:1], TabelaItens[0][e:2]);

Reply

+rep MultiKill

A confusгo era realmente no "esqueleto" da array. Entendi perfeitamente e jб corrigi o problema, obrigado pela explicaзгo detalhada.

Agora tenho outra pequena duvida: retornar 0 para um jogador Admin em OnPlayerUpdate farб ele ver todos mas ninguйm ver ele?

Isso seria ъtil para o Admin "andar invisivel" pelo mapa no mesmo Virtual World.
Reply

Quote:
Originally Posted by FanonRiouDiou
View Post
+rep MultiKill

A confusгo era realmente no "esqueleto" da array. Entendi perfeitamente e jб corrigi o problema, obrigado pela explicaзгo detalhada.

Agora tenho outra pequena duvida: retornar 0 para um jogador Admin em OnPlayerUpdate farб ele ver todos mas ninguйm ver ele?

Isso seria ъtil para o Admin "andar invisivel" pelo mapa no mesmo Virtual World.
Se bem me lembro, isso vai fazer com que ele fique com status de pausado, mas nгo fica invisнvel.
Reply

Quote:
Originally Posted by FanonRiouDiou
View Post
+rep MultiKill

A confusгo era realmente no "esqueleto" da array. Entendi perfeitamente e jб corrigi o problema, obrigado pela explicaзгo detalhada.

Agora tenho outra pequena duvida: retornar 0 para um jogador Admin em OnPlayerUpdate farб ele ver todos mas ninguйm ver ele?

Isso seria ъtil para o Admin "andar invisivel" pelo mapa no mesmo Virtual World.
Sim, jб usei return 0; para parar de atualizar a posiзгo jogador em um anticheat.
Reply


Forum Jump:


Users browsing this thread: 11 Guest(s)