PDA

View Full Version : [Ajuda] Dúvidas Curtas #1


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36

F1N4L
13/06/2016, 05:52 PM
O limite de textdraws é a quantidade de textdraws que podem ser criadas, ou é a quantidade que podem ser mostradas ao player ao mesmo tempo?

https://wiki.sa-mp.com/wiki/Limits_PT

ipsLuan
13/06/2016, 07:10 PM
https://wiki.sa-mp.com/wiki/Limits_PT
https://wiki.sa-mp.com/wiki/Limits
O traduzido não está atualizado...

undername
13/06/2016, 07:12 PM
https://wiki.sa-mp.com/wiki/Limits
O traduzido não está atualizado...

Sim já havia visto. Mais o que eu não entendi é: Isto é o limite que se pode criar uma textdraw (TextDrawCreate/CreatePlayerTextDraw) ou é o limite que pode mostrar essas textdraws na tela do player? Ou é os dois, o limite maximo que pode criar textdraws, junto com o maximo que pode-se mostra-las na tela do player?

ipsLuan
13/06/2016, 07:15 PM
Só podem ser criadas 256 textdraws (per-player).
Só podem ser criadas 2048 textdraws (global).
Só podem ser exibidas 2304 textdraws.

Acho que é isso, nunca parei pra estudar sobre isso não.

undername
13/06/2016, 07:20 PM
Só podem ser criadas 256 textdraws (per-player).
Só podem ser criadas 2048 textdraws (global).
Só podem ser exibidas 2304 textdraws.

Acho que é isso, nunca parei pra estudar sobre isso não.

É, mais se for parar pra pensar não tem muita lógica eles limitarem a quantidade de textdraws que eu posso criar. Seria mais cabível eles limitarem a quantidade que eu vou mostrar na tela..
Acho que o único jeito de eu resolver essa fita ai é testando.

F1N4L
13/06/2016, 07:28 PM
É, mais se for parar pra pensar não tem muita lógica eles limitarem a quantidade de textdraws que eu posso criar. Seria mais cabível eles limitarem a quantidade que eu vou mostrar na tela..
Acho que o único jeito de eu resolver essa fita ai é testando.

Pelo que eu ví, o limite POR TELA é 100 TD's.

Kimossab
13/06/2016, 07:29 PM
É, mais se for parar pra pensar não tem muita lógica eles limitarem a quantidade de textdraws que eu posso criar. Seria mais cabível eles limitarem a quantidade que eu vou mostrar na tela..
Acho que o único jeito de eu resolver essa fita ai é testando.

se nao sabem palavras em ingles usem um dicionario...

Shown In A Single Client's Screen 2048 + 256 ✝
Shown In A Single Client's Screen (sprites) 100
Created Serverwise (Global) 2048
Created Serverwise (Per-Player) 256


ou seja:
Mostradas no ecra de um só jogador: 2048+256 (não recomendado)
Mostradas no ecra de um só jogador (sprites): 100
Criadas no servidor (Global): 2048
Criadas no servidor (Por-Jogador): 256

Ou seja, nao há limitações a mostrar mas sim a criar. Os limites têm a ver com a forma de como os textdraws foram criados pela equipa samp. Se existem é porque têm lógica.

Carlos001
15/06/2016, 02:32 PM
Iae Precisso De Ajuda Para Passar Um Sistema De INI Para D0F2

eu so quero saber as funçoes tipo:
INI_SetTag = DOF2_SetInt
Eu quero saber quais Funçoes Substituir Para Nao fazer Erro.
Eu Quero Saber Isso Para Passar Meu Sistema De INI Para D0F2 Alguem Me Ajuda? (se nao tiver entendido fale que tento explica)

zPain
15/06/2016, 02:41 PM
Tratando-se de y_ini e DOF2, somente alterar o nome das funções não é suficiente. Recomendo a você ler um tutorial sobre cada uma das includes. Uma vez que você entende como os dois funcionam, deve ser fácil fazer a conversão.

Carlos001
15/06/2016, 02:42 PM
Voce Não Pode Me Falar Apenas As Funçoes? (to precissando Muito)

(Pode Me Passar Os Tutoriais?)

zPain
15/06/2016, 02:45 PM
Y_INI: http://forum.sa-mp.com/showthread.php?t=404285
DOF2: http://forum.sa-mp.com/showthread.php?t=422519

Whoo
17/06/2016, 07:10 PM
// porque não esta mostrando o a letra da posição '4' no caso 'd', esta printando de 'd' para frente 'dlc';
new var[8] = "Whoodlc"; printf("%s", var[4]);

F1N4L
17/06/2016, 07:18 PM
// porque não esta mostrando o a letra da posição '4' no caso 'd', esta printando de 'd' para frente 'dlc';
new var[8] = "Whoodlc"; printf("%s", var[4]);


Imprime a partir da célula selecionada:
var[0] = Whoodlc
var[1] = hoodlc
...

zSuYaNw
17/06/2016, 07:53 PM
// porque não esta mostrando o a letra da posição '4' no caso 'd', esta printando de 'd' para frente 'dlc';
new var[8] = "Whoodlc"; printf("%s", var[4]);


Imprime a partir da célula selecionada:
var[0] = Whoodlc
var[1] = hoodlc
...

Na verdae, você está usando o operador %s que é para strings! Para imprimir apenas caracteres, use %c.


new string[12] = "Hello World";

for(new i; i != sizeof(string); ++i){
printf("%c", string[i]);
}

F1N4L
17/06/2016, 07:58 PM
Na verdae, você está usando o operador %s que é para strings! Para imprimir apenas caracteres, use %c.


new string[12] = "Hello World";

for(new i; i != sizeof(string); ++i){
printf("%c", string[i]);
}


Boa, não sabia dessa!
Vlw pela correção.

Whoo
17/06/2016, 08:09 PM
Na verdae, você está usando o operador %s que é para strings! Para imprimir apenas caracteres, use %c.


new string[12] = "Hello World";

for(new i; i != sizeof(string); ++i){
printf("%c", string[i]);
}


nossa verdade, obrigado aos dois.

zSuYaNw
17/06/2016, 08:13 PM
Boa, não sabia dessa!
Vlw pela correção.

nossa verdade, obrigado aos dois.

Da uma olhada na wiki (http://wiki.sa-mp.com/wiki/Format), ela fala exatamente sobre isso e outros caracteres!



%i Número inteiro
%d Numero inteiro
%s string/textos
%f ponto flutuante
%c caractere ASCII ( letras, números e símbolo )
%x números hexadecimal
%b Número binário
%% Representa o %
%q Tecla de escape em SQLite ( 0.3.7 )

RockstarL
17/06/2016, 10:49 PM
Pequena dúvida, tem como mudar a 'ShowPlayerDialog' de lugar na tela, porque ela fica no meio da tela e estou fazendo uma textdraw e isso atrapalha. !?

zSuYaNw
17/06/2016, 10:55 PM
Pequena dúvida, tem como mudar a 'ShowPlayerDialog' de lugar na tela, porque ela fica no meio da tela e estou fazendo uma textdraw e isso atrapalha. !?

Não há como mudar ShowPlayerDialog da tela. Oque você pode fazer é fazer um conjunto de textdraw que imita um Dialog.

RockstarL
17/06/2016, 11:04 PM
Não há como mudar ShowPlayerDialog da tela. Oque você pode fazer é fazer um conjunto de textdraw que imita um Dialog.

Verdade, me deu uma ideia boa, Valeu!

RogerCosta
18/06/2016, 02:53 AM
Verdade, me deu uma ideia boa, Valeu!

Olha, tem um include na board inglesa, do OstGot, que usa textdraws pra simular um dialog. Dá uma olhada, quem sabe você consiga editar :D

http://forum.sa-mp.com/showthread.php?t=597813

RockstarL
18/06/2016, 06:55 PM
Olha, tem um include na board inglesa, do OstGot, que usa textdraws pra simular um dialog. Dá uma olhada, quem sabe você consiga editar :D

http://forum.sa-mp.com/showthread.php?t=597813

Consegui aqui
Nóis, bro.:cool:

F1N4L
21/06/2016, 06:45 PM
Substituir NPC's por Actors, mesmo sabendo que Actors não caminham ou dirigem, é uma boa no quesito QUANTIDADE? Colocar bastante NPC's resulta em lag, mas e em uma quantia grande de Actors?

RogerCosta
21/06/2016, 07:07 PM
Você pode colocar actors e usar alguma animação WALK. Tem um include aqui no fórum se não me engano chamado Extended Actor Functions, do Gammix, e tem uma função pra faze-lo caminhar até um ponto no mapa.

F1N4L
21/06/2016, 07:10 PM
Você pode colocar actors e usar alguma animação WALK. Tem um include aqui no fórum se não me engano chamado Extended Actor Functions, do Gammix, e tem uma função pra faze-lo caminhar até um ponto no mapa.

Obrigado, é interessante, porém meu foco é mesmo na quantidade de Actors e se isso resultaria em lag.

zSuYaNw
21/06/2016, 07:14 PM
Obrigado, é interessante, porém meu foco é mesmo na quantidade de Actors e se isso resultaria em lag.

Eu particularmente acho que uma grande quantidade de Actors em uma região pequena ou uma região de spawn causaria um certo lag. Mas o lag é complicado de prever, tem varias variações como ping do jogador, quantidade de objetos ao redor etc...

F1N4L
21/06/2016, 07:19 PM
Eu particularmente acho que uma grande quantidade de Actors em uma região pequena ou uma região de spawn causaria um certo lag. Mas o lag é complicado de prever, tem varias variações como ping do jogador, quantidade de objetos ao redor etc...

Acho interessante interação com NPC's e Actors, isso, acredito eu, é indispensável em um servidor RPG...
Mas é claro que vai da imaginação e eu acredito que ficaria bem bacana uma interação entre Actor e Jogador, mas para isso eu estou contando com QUANTIDADE!

HaRdiiZin
21/06/2016, 07:52 PM
Você pode colocar actors e usar alguma animação WALK. Tem um include aqui no fórum se não me engano chamado Extended Actor Functions, do Gammix, e tem uma função pra faze-lo caminhar até um ponto no mapa.

Essa include que você falou é do Emmet_ não é?

RogerCosta
21/06/2016, 08:00 PM
Essa include que você falou é do Emmet_ não é?Na verdade eu me enganei de include, o que queria ter dito é o PEDs Include do Gammix, mas sim, o Extended Actor Functions é o do Emmet_ :)

PEDs Include: http://forum.sa-mp.com/showthread.php?t=572366

Edit: eu fiz uns testes no server local, criei uns actors, e vai dar lag de FPS em pcs fracos. O meu é, e notei uma queda no fs com essa quantidade de actors, mas nada que não desse pra jogar:

http://imgur.com/vCn0JMz

F1N4L
22/06/2016, 12:18 PM
Edit: eu fiz uns testes no server local, criei uns actors, e vai dar lag de FPS em pcs fracos. O meu é, e notei uma queda no fs com essa quantidade de actors, mas nada que não desse pra jogar:

http://imgur.com/vCn0JMz

Vlw man!

@EDIT

Estou começando com C# e é uma linguagem bacana, bem diferente de se trabalhar, mas é legal...
Apanhei pra entender a simplicidade da concatenação de strings hueuheuh mas foi embora!
O bacana é que dá para trabalhar com windows form e isso faz uma junção de vb.net com C#...

Alguém aí programa em C#?

Dolby
22/06/2016, 01:19 PM
Vlw man!

@EDIT

Estou começando com C# e é uma linguagem bacana, bem diferente de se trabalhar, mas é legal...
Apanhei pra entender a simplicidade da concatenação de strings hueuheuh mas foi embora!
O bacana é que dá para trabalhar com windows form e isso faz uma junção de vb.net com C#...

Alguém aí programa em C#?

Com certeza! Conheço muitos aqui do fórum que ganham a vida com o C#!

Kimossab
22/06/2016, 04:08 PM
Manda PM e eu sou capaz de responder as tuas duvidas, seja de C# como C++ ou C

Kanuy
24/06/2016, 12:27 PM
Bom estou voltando para a linguagem, e fazendo um novo projeto 4fun, onde teria missões disponíveis como no modo história, lojas, casas e carros. Em fim quando parei de "codar" la por fim de 2013 não tinha muita experiencia algo que seja entre iniciante~intermediário. Minha dúvida é sobre qual seria a lógica a ser usada caso o jogador morra num determinado ponto do mapa, fazer com que ele spawn cerca de 150~200 metros de onde morreu (sem ser: voando, na água ou limbo, no meio da rua da até pra aceitar).

F1N4L
24/06/2016, 12:36 PM
Bom estou voltando para a linguagem, e fazendo um novo projeto 4fun, onde teria missões disponíveis como no modo história, lojas, casas e carros. Em fim quando parei de "codar" la por fim de 2013 não tinha muita experiencia algo que seja entre iniciante~intermediário. Minha dúvida é sobre qual seria a lógica a ser usada caso o jogador morra num determinado ponto do mapa, fazer com que ele spawn cerca de 150~200 metros de onde morreu (sem ser: voando, na água ou limbo, no meio da rua da até pra aceitar).

Lógica:
Supondo que o jogador morra, vc precisa pegar a posição de onde ele morreu;
Quando salvamos a posição de morte, vamos informar esta posição na hora do spawn;
Precisamos verificar primeiramente se a causa foi realmente a morte, pois na hora de dar spawn pode ser que ele não tenha morrido, apenas conectado, e a posição está em 0.0, não daria certo, para isso criamos uma variável booleana para realizar esta verificação...

Código:

new Float:Pos[3][MAX_PLAYERS], bool:Morreu[MAX_PLAYERS];

public OnPlayerDeath(playerid, killerid, reason)
{
GetPlayerPos(playerid, Pos[0][playerid], Pos[1][playerid], Pos[2][playerid]);
Morreu[playerid] = true;

return 1;
}

public OnPlayerSpawn(playerid)
{
if(Morreu[playerid] == true)
{
Morreu[playerid] = false;
SetPlayerPos(playerid, Pos[0][playerid] + random(100), Pos[1][playerid] + random(100), Pos[2][playerid]);
}

return 1;
}


P.S: Este código vai dar spawn no jogador na pos X e Y randomicamente, o que pode acontecer é de dar spawn dentro de alguma casa/propriedade e cair no meio do nada...

Kanuy
24/06/2016, 01:01 PM
Exato F1N4L, eu pensei em fazer coordenadas de spawn pré-definidas e usar a posição ao morrer para comparar e usar a mais próxima para spawnar, para não ser totalmente aleatório e entrar em objetos.

OverKiller
24/06/2016, 04:05 PM
Manda PM e eu sou capaz de responder as tuas duvidas, seja de C# como C++ ou C

E C#, C++ não é a mesma coisa? o.O

leonardo1434
24/06/2016, 04:17 PM
E C#, C++ não é a mesma coisa? o.O
Não...

Dayvison_
24/06/2016, 04:43 PM
Você pode usar isto http://forum.sa-mp.com/showthread.php?t=472920 como lógica(O iImage funciona perfeitamente), porém você deve alterar o "mapa.bmp" para um de melhor qualidade, e mudar o algorítimo de verificação que está calculando errado.

F1N4L
24/06/2016, 04:48 PM
E C#, C++ não é a mesma coisa? o.O

Eu mexi um bom pouco com C# e é um pouco mais complicado que C++...
Comparação de string é bem diferente, concatenação é diferente, mas com C# vc pode usar tanto console quanto windows form, isso é bom!

Kimossab
24/06/2016, 05:24 PM
E C#, C++ não é a mesma coisa? o.O
Obvio que nao, se não qual era a logica de uma ser C# (C sharp) e outra C++ (C mais mais) ?

Eu mexi um bom pouco com C# e é um pouco mais complicado que C++...
Comparação de string é bem diferente, concatenação é diferente, mas com C# vc pode usar tanto console quanto windows form, isso é bom!

C# é mais simples no global que C++ (acredita). C++ é mais parecido com C do que C#. Com C++ tambem podes criar projetos para consola ou windows form (a microsoft é que está a tentar puxar tudo para usar C# e WPF).

OverKiller
24/06/2016, 05:24 PM
Eu mexi um bom pouco com C# e é um pouco mais complicado que C++...
Comparação de string é bem diferente, concatenação é diferente, mas com C# vc pode usar tanto console quanto windows form, isso é bom!

E esses tipos de liguagem ae, da pra fazer um jogo Offline do zero? tipo Gta 3, san andreas, vice city? ou é parecido com o samp na qual é um servidor online?

Kamper
24/06/2016, 06:20 PM
E esses tipos de liguagem ae, da pra fazer um jogo Offline do zero? tipo Gta 3, san andreas, vice city? ou é parecido com o samp na qual é um servidor online?
Cara, você está fazendo as perguntas erradas e vai ter resposta sem sentido.

Se você tem interesse em programação vai em busca de informações conceituais sobre programação pois pelo o que pude ver você não tem base alguma e desse jeito vai continuar fazendo essas perguntas sem sentido e vai acabar sendo levado pro caminho errado por resposta de pessoas que falam o que não sabem. Vai por mim, falo pro teu bem

Kimossab
24/06/2016, 07:02 PM
E esses tipos de liguagem ae, da pra fazer um jogo Offline do zero? tipo Gta 3, san andreas, vice city? ou é parecido com o samp na qual é um servidor online?

Dar dá. Tens competencias para tal? nao. Antes de te preocupares em fazer um jogo tens que começar por baixo, aprender a linguagem fazer coisas pequenas. Se realmente queres fazer um jogo é mais facil pesquisares, porque existem motores tipo o Unity que são à borla e te permitem fazer um jogo decente com pouca programação.

Ja agora tou a ver que nem sabes o que é pawn ou uma linguagem de programaçao para teres feito essas perguntas...

zSuYaNw
24/06/2016, 08:37 PM
E esses tipos de liguagem ae, da pra fazer um jogo Offline do zero? tipo Gta 3, san andreas, vice city? ou é parecido com o samp na qual é um servidor online?

jà me fizeram esta pergunta, C++ é uma linguagem incrível que consegue ser de baixo e alto nível aponde pode se criar plugins(extensões) ou até programas! Também é possível criar jogos, mas creio que existem engines melhores e mais fáceis de fazer, se não me engano tinha um membro do fórum criando um jogo estilo GTA com o Unity3D!

OverKiller
24/06/2016, 09:13 PM
Tendi obrigado. Meu deus como o garfield torna tudo tão facil de entender. Obg^^

zSuYaNw
25/06/2016, 12:20 PM
Tendi obrigado. Meu deus como o garfield torna tudo tão facil de entender. Obg^^
Da uma olhada aqui:
https://pt.wikipedia.org/wiki/C%2B%2B#Caracter.C3.ADsticas

SammyJ
26/06/2016, 01:48 PM
Tem como mudar o nome aqui no fórum ?

Locky_
26/06/2016, 03:16 PM
Tem como mudar o nome aqui no fórum ?

sim, mas deve enviar seu nickname ao moderador dugi (e deve insistir um pouco) pra que ele possa trocar. (mande mp em inglês)

zSuYaNw
26/06/2016, 06:38 PM
Tem como mudar o nome aqui no fórum ?

Uns dois anos atras ele havia criado um topico especialmente pra isso,aonde varios usuarios trocaram seu nickname, hoje não sei se ele ainda muda.

Kanuy
27/06/2016, 02:16 PM
Dei uma procurada no fórum e não achei bem o que queria, ou não usei palavra chave certa.
Duvida 1: É possível interligar public do GM com FS?
Duvida 2: Meu arquivo .pwn tem 55KB e o .amx 187KB isso significa que o .pwn está "optimizado"?
Duvida 3: Estou desenvolvendo um gamemode com intuito de criar cerca de 1 centena de missões o que ocasionaria um alto numero de public e stock separados para missões diferentes, teria problema se os códigos estive-sem apenas no GM?

zSuYaNw
27/06/2016, 02:21 PM
Dei uma procurada no fórum e não achei bem o que queria, ou não usei palavra chave certa.
Duvida 1: É possível interligar public do GM com FS?
Duvida 2: Meu arquivo .pwn tem 55KB e o .amx 187KB isso significa que o .pwn está "optimizado"?
Duvida 3: Estou desenvolvendo um gamemode com intuito de criar cerca de 1 centena de missões o que ocasionaria um alto numero de public e stock separados para missões diferentes, teria problema se os códigos estive-sem apenas no GM?

1 - Sim, podes ver meu mini tutorial: http://forum.sa-mp.com/showpost.php?p=3707790&postcount=18

2 - Não. Oque indica que seu gamemode está otimizado é como você utiliza suas variáveis/arrays buscando velocidade, muitas vezes o .amx fica muito maior quando criamos um código otimizado. Eu estou falando "as vezes" isto é, ter um .amx menor ou maior não faz diferença.

3 - Não. Você pode criar várias stocks ou fazer várias callbacks mas tente criar um jeito que melhor para você se organizar.

F1N4L
27/06/2016, 02:25 PM
Dei uma procurada no fórum e não achei bem o que queria, ou não usei palavra chave certa.
Duvida 1: É possível interligar public do GM com FS?
Duvida 2: Meu arquivo .pwn tem 55KB e o .amx 187KB isso significa que o .pwn está "optimizado"?
Duvida 3: Estou desenvolvendo um gamemode com intuito de criar cerca de 1 centena de missões o que ocasionaria um alto numero de public e stock separados para missões diferentes, teria problema se os códigos estive-sem apenas no GM?

1 - Sim, CallRemoteFunction (https://wiki.sa-mp.com/wiki/CallRemoteFunction)
2 - Não, amx é a compilação de seu código no GM, incluindo as includes.
3 - Aí fica a seu critério, pois funções separadas do GM (módulos) já fica uma questão de organização...

Kanuy
27/06/2016, 02:38 PM
1 - Sim, podes ver meu mini tutorial: http://forum.sa-mp.com/showpost.php?p=3707790&postcount=18



Bem isso que eu queria, eu pensei em interagir as missões com um FS, mas vou passar o meu sistema de admin pra um FS de resto mantenho no gamemode.
Vlw gato esse não tinha achado

1 - Sim, CallRemoteFunction (https://wiki.sa-mp.com/wiki/CallRemoteFunction)


Eu não queria ficar dependendo de CallRemoteFunction as public's seriam basicamente:
public Exemplo(playerid)
{
new car = CreateVehicle( . . .); //exemplo
}

Vlw por responder '-'

F1N4L
27/06/2016, 02:42 PM
Eu não queria ficar dependendo de CallRemoteFunction as public's seriam basicamente:
public Exemplo(playerid)
Vlw por responder '-'

Do que está a falar? No tutorial do gato ele usa CallRemoteFunction...
Única maneira de usar callbacks sem CallRemoteFunction seria usar includes em vez de FS, o resultado seria o mesmo, porém o GM seria em partes, isso gera uma organização muito boa se souber utilizar.

Kanuy
27/06/2016, 02:43 PM
Do que está a falar? No tutorial do gato ele usa CallRemoteFunction...
Única maneira de usar callbacks sem CallRemoteFunction seria usar includes em vez de FS, o resultado seria o mesmo, porém o GM seria em partes, isso gera uma organização muito boa se souber utilizar.
Poise i'm big noob

zSuYaNw
27/06/2016, 02:54 PM
Poise i'm big noob

É possível passar parâmetros também, da uma olhada: http://wiki.sa-mp.com/wiki/CallRemoteFunction

hlgamesbr
28/06/2016, 12:27 AM
Iai gurizada, queria saber se tem como eu otimizar esse comando, tipo, deixar ele sem pessar muito, ocupando menas linhas, se isso for possivel!;)
Grato em uma resposta!


Comando:

CMD:esconde(playerid, params [])
{
if(foievento[playerid] > 0)
{
SendClientMessage(playerid, Vermelho, "Você já foi ao evento, espere ele acabar!");
}else{
if(evento1[playerid] > 0)
{
foievento[playerid] = 1;
ResetPlayerWeapons(playerid);
new rand = random(sizeof(escondemad));
SetPlayerPos(playerid, escondemad[rand][0], escondemad[rand][1], escondemad[rand][2]);
SetPlayerInterior(playerid, 5);
GivePlayerWeapon(playerid, 38, 9999);
}else{
SendClientMessage(playerid, Vermelho, "Esse evento não está aberto!");
}
}
return 1;
}

CaioTJF
28/06/2016, 12:47 AM
Seu código já está bem feito.
Mas não vá muito na onda de deixar o código feio pra "otimizar", as vezes pular mais linhas, da espaços, ajuda bastante na organização. Não dar espaços, não pular linhas, isso não é otimização.

Eu deixei o seu código do meu jeito de organizar, caso queira =P


CMD:esconde(playerid, params [])
{
if(foievento[playerid]) > 0)
return SendClientMessage(playerid, Vermelho, "Você já foi ao evento, espere ele acabar!");

if(evento1[playerid] > 0) {
foievento[playerid] = 1;
ResetPlayerWeapons(playerid);
new rand = random(sizeof(escondemad));
SetPlayerPos(playerid, escondemad[rand][0], escondemad[rand][1], escondemad[rand][2]);
SetPlayerInterior(playerid, 5);
GivePlayerWeapon(playerid, 38, 9999);
} else {
SendClientMessage(playerid, Vermelho, "Esse evento não está aberto!");
}
return true;
}


Obs.: Nesse caso aqui, você pode usar booleans: http://forum.sa-mp.com/showthread.php?t=525379

zSuYaNw
28/06/2016, 03:32 AM
Iai gurizada, queria saber se tem como eu otimizar esse comando, tipo, deixar ele sem pessar muito, ocupando menas linhas, se isso for possivel!;)
Grato em uma resposta!


Comando:

CMD:esconde(playerid, params [])
{
if(foievento[playerid] > 0)
{
SendClientMessage(playerid, Vermelho, "Você já foi ao evento, espere ele acabar!");
}else{
if(evento1[playerid] > 0)
{
foievento[playerid] = 1;
ResetPlayerWeapons(playerid);
new rand = random(sizeof(escondemad));
SetPlayerPos(playerid, escondemad[rand][0], escondemad[rand][1], escondemad[rand][2]);
SetPlayerInterior(playerid, 5);
GivePlayerWeapon(playerid, 38, 9999);
}else{
SendClientMessage(playerid, Vermelho, "Esse evento não está aberto!");
}
}
return 1;
}


Este código não tem oque otimizar, esta somente desorganizado.

F1N4L
05/07/2016, 11:41 AM
Qual o melhor IDE para programar Java? (IDE's feitos para Java e não que apenas compilam o código)

RogerCosta
05/07/2016, 12:04 PM
Ou o carinha ali de cima pode usar PVars e SVars também, caso o gamemode estiver no inicio ainda.

ZombieSmashYT
05/07/2016, 01:17 PM
É possivel digitar em TextDraws? Tipo um sistema de registro e login.

F1N4L
05/07/2016, 01:22 PM
É possivel digitar em TextDraws? Tipo um sistema de registro e login.

Acredito que não em tempo real (com exceção do editor de TD), mas pode fazer concatenação de strings para passar o texto digitado para o TD em questão. Eu uso desta forma e funciona perfeitamente, ainda utilizo * no texto do TD pra censurar a senha.
Vai da criatividade...

ZombieSmashYT
05/07/2016, 01:25 PM
Acredito que não em tempo real (com exceção do editor de TD), mas pode fazer concatenação de strings para passar o texto digitado para o TD em questão. Eu uso desta forma e funciona perfeitamente, ainda utilizo * no texto do TD pra censurar a senha.
Vai da criatividade...

Vou ver se consigo xD

RogerCosta
05/07/2016, 02:35 PM
É possivel digitar em TextDraws? Tipo um sistema de registro e login.

Tem que ver se tem como reconhecer todas as teclas. Mas dai, iria ter que fazer uma puta código, você iria quebrar a cabeça, pra uma coisa não tanto relevante. Eu sei que ficaria foda pra cacete, principalmente quando tem uma tela de login bonita. Odeio quando entro em server com tela de login/registro bonita, ai tu clica em registrar, e abre aquela porra de dialogo feião por cima.

ZombieSmashYT
05/07/2016, 02:45 PM
Tem que ver se tem como reconhecer todas as teclas. Mas dai, iria ter que fazer uma puta código, você iria quebrar a cabeça, pra uma coisa não tanto relevante. Eu sei que ficaria foda pra cacete, principalmente quando tem uma tela de login bonita. Odeio quando entro em server com tela de login/registro bonita, ai tu clica em registrar, e abre aquela porra de dialogo feião por cima.

Também acho muito feio, mas acho que não tem oque fazer, quem sabe mais adiante, pois ainda sou novato em pawn!

ipsLuan
05/07/2016, 04:19 PM
Se for do jeito que eu tô pensando, sim, é possível.

zSuYaNw
05/07/2016, 09:03 PM
Tem que ver se tem como reconhecer todas as teclas. Mas dai, iria ter que fazer uma puta código, você iria quebrar a cabeça, pra uma coisa não tanto relevante. Eu sei que ficaria foda pra cacete, principalmente quando tem uma tela de login bonita. Odeio quando entro em server com tela de login/registro bonita, ai tu clica em registrar, e abre aquela porra de dialogo feião por cima.

Tente usar esta plugin: http://forum.sa-mp.com/showthread.php?t=268671
Mas creio que não é possível usar todas as keys no game.

CaioTJF
05/07/2016, 09:34 PM
Se for só um dialog pra digitar acho que não fica feio :v
Eu fiz um trabalho com textdraws recentemente criando uma tela de login/registro e usei dialog:

http://i.imgur.com/FvOkxGe.jpg
http://i.imgur.com/bHWyMAW.jpg

Mas bem que o SA-MP poderia disponibilizar vários tipos de design pros dialog né

Dayvison_
05/07/2016, 09:36 PM
Tente usar esta plugin: http://forum.sa-mp.com/showthread.php?t=268671
Mas creio que não é possível usar todas as keys no game.

http://image.prntscr.com/image/de1e5a46235e4a618c29840a0c9eadd7.png

RogerCosta
05/07/2016, 10:41 PM
Caio, ficou foda pra cacete esse seus textdraws do registro/login. Mas o que fode mesmo é o dialogo por cima.

Eu tava pensando aqui, em uma tela de login usando textdraws, só que adaptado junto ao dialogo. Ao clicar em registrar, mostra o dialogo sem preencher o caption[] e info[], e fazer os texts em volta.

CaioTJF
05/07/2016, 11:19 PM
Entendi.
Realmente ficaria legal =P

O SA-MP poderia simplesmente disponibilizar para setar as coordenadas de onde o dialog apareceria na tela, ajudaria bastante também

RogerCosta
05/07/2016, 11:21 PM
Fiz um exemplo aqui, usei o textdraw do Caio emprestado. No caso, olha como ficaria interligando um dialogo totalmente vazio, apenas com o campo pra digitar a senha, e os textdraws em volta. Ficaria melhorzinho, mas dai tem que ver quem gosta né. Also, a linha pontilhada é a área do textdraw:

http://imgur.com/acJmWXo

Edit: sim, o ruim é que centraliza o dialogo automaticamente, dai ferra também.

CaioTJF
05/07/2016, 11:35 PM
Problema é que o dialog pode aumentar de tamanho, e como você disse, ele centraliza se expandindo.

RogerCosta
06/07/2016, 12:03 AM
Então, ele só aumenta de tamanho caso você coloque algo no info[], se deixar em branco, ele fica exatamente daquele tamanho que mostrei na imagem. Só aumenta ou diminui, de acordo com a resolução, mas dai as textdraws também se adequam.

SammyJ
07/07/2016, 01:54 AM
Duvida Simples sobre reputação

Como e contado as reputação, assim vi em meu panel que recebi 9 reputações, só que aparece somente Reputation 4 no perfil quando enviamos messagem.

Whoo
07/07/2016, 03:52 AM
Se não me engano reputação só vale quando o usuario tem um determinado numero de post

RogerCosta
07/07/2016, 05:09 AM
Ué, é só adicionar a reputação ao player. Eu mesmo, agora, acabei de dar uma reputação a postagem do Whoo. Ali na estrelinha, próximo a foto do perfil.

zSuYaNw
07/07/2016, 08:46 PM
Duvida Simples sobre reputação

Como e contado as reputação, assim vi em meu panel que recebi 9 reputações, só que aparece somente Reputation 4 no perfil quando enviamos messagem.

O usuário que lhe dá reputation terá que ter acima de 50 postagens para poder "contar", caso estiver menos que 50 posts o "reputation" ficará cinza e não será contado.

hlgamesbr
07/07/2016, 09:16 PM
Alguem sabe um tutorial de um sistema de armas aleatorias?
Seguinte, quando o player spawnar ele nace com uma faca e uma pistola, ae quando ele morrer, ele spawna dnv mas com uma pá e uma shotgun....
To me matando pra fazer um que funcione, mas n consigo!
Ajuda porfavor!

zSuYaNw
07/07/2016, 09:18 PM
Alguem sabe como fazer um sistema de armas aleatorias?
Seguinte, quando o player spawnar ele nace com uma faca e uma pistola, ae quando ele morrer, ele spawna dnv mas com uma pá e uma shotgun....
To me matando pra fazer um que funcione, mas n consigo!
Ajuda porfavor!

Não é algo extremamente difícil: http://forum.sa-mp.com/showthread.php?t=69346

hlgamesbr
07/07/2016, 11:01 PM
Não é algo extremamente difícil: http://forum.sa-mp.com/showthread.php?t=69346

É que nunca fui de procurar no forum gringo! :rolleyes:

zSuYaNw
07/07/2016, 11:16 PM
É que nunca fui de procurar no forum gringo! :rolleyes:

Eu geralmente meto o site:forum.sa-mp.com minha duvida e aparece muitos resultados que suprem minha necessidade! Creio que se a grande maioria do fórum utilizasse este método, teria dúvidas menos recorrentes/frequentes.

Locky_
08/07/2016, 01:30 AM
Não sei porque, mas a callback OnPlayerClickMap não funciona mais no meu servidor, já reinstalei o SA-MP e tudo mas... sem sucesso... E não sei de nenhum plugin/include que tenha causado isso, alguém tem algum indicio do que pode ser?

PT
10/07/2016, 02:40 AM
Que método vocês usam por ai para verificar se um carro esta trancado ou não??

pWesley
10/07/2016, 02:54 AM
Como eu desabilito o tiro na skin? Eu coloquei lagcompmode 0, no entanto, quando eu vou receber tiro, acaba que nem sou afetado.

CaioTJF
10/07/2016, 02:56 AM
Que método vocês usam por ai para verificar se um carro esta trancado ou não??

https://wiki.sa-mp.com/wiki/SetVehicleParamsEx

Se você trancar usando essa função, usa:

https://wiki.sa-mp.com/wiki/GetVehicleParamsEx

GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);

doors retornará true ou false, true = trancado

PT
10/07/2016, 03:01 AM
https://wiki.sa-mp.com/wiki/SetVehicleParamsEx

Se você trancar usando essa função, usa:

https://wiki.sa-mp.com/wiki/GetVehicleParamsEx

GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);

doors retornará true ou false, true = trancado

estou usando mas ta dando falsas informações..

CaioTJF
10/07/2016, 03:24 AM
Talvez https://wiki.sa-mp.com/wiki/ManualVehicleEngineAndLights ?

Dayvison_
10/07/2016, 01:15 PM
ToggleVehicleDoors(vehicleid) // Caso tiver trancado destranca veiculo e vice versa
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, engine, lights, alarm, !doors, bonnet, boot, objective);
}
LockVehicleDoors(vehicleid) // Tranca o carro.
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, engine, lights, alarm, true, bonnet, boot, objective);
}
UnlockVehicleDoors(vehicleid) // Destranca o carro.
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, engine, lights, alarm, false, bonnet, boot, objective);
}
IsVehicleLocked(vehicleid) // Retorna se o veiculo esta trancado(true = sim, false = nao)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
return doors;
}

Está usando assim?

PT
11/07/2016, 03:02 PM
estava me a esquecer dos parametros unset (-1) dai os "supostos" falsos reports

Coreia
16/07/2016, 12:58 AM
E aí galera, beleza? Bom queria saber qual é a fonte padrão que o SA-MP usa? Grato! :D

SammyJ
17/07/2016, 02:35 AM
Boa noite pessoal queria saber como zerar todas as varias de uma enum de uma só vez tipo assim:

enum data
{
var1,
var2,
var3,
var4,
var5,
var6,
var7,
var9,
var11,
var12,
var13,
var14
}
new Info[MAX_PLAYERS + 1][data];

public OnGameModeInit()
{
Info[MAX_PLAYERS][data] = 0;
return 1;
}


@edit

OBS: Quero saber se tem como fazer isso sem loop só isso ! Obrigado!!!

Whoo
17/07/2016, 02:50 AM
Sem não d... Faz utilizando loop

SammyJ
17/07/2016, 02:57 AM
Assim até compila só que da warning tag mismatch, e também não sei se é funcional(se reseta mesmo as vars), eu tinha visto uma maneiro na board gringa, mais não consigo mais acha-la !!

Whoo
17/07/2016, 03:45 AM
Assim até compila só que da warning tag mismatch, e também não sei se é funcional(se reseta mesmo as vars), eu tinha visto uma maneiro na board gringa, mais não consigo mais acha-la !!

posta para nos poder ver o que esta fazendo


enum enum_text
{
var1,
var2,
var3,
var4
};

new enum_var[11][enum_text];

enum_var[3][var1] = 1;
enum_var[3][var2] = 2;
enum_var[3][var3] = 3;
enum_var[3][var4] = 4;

printf("%i", enum_var[3][var1]);
printf("%i", enum_var[3][var2]);
printf("%i", enum_var[3][var3]);
printf("%i", enum_var[3][var4]);

for(new a; a != _:enum_text; a++) enum_var[3][enum_text:a] = 0;

printf("%i", enum_var[3][var1]);
printf("%i", enum_var[3][var2]);
printf("%i", enum_var[3][var3]);
printf("%i", enum_var[3][var4]);


@edit

Achei um post com a dúvida igual a sua

http://forum.sa-mp.com/showthread.php?t=384695

RogerCosta
17/07/2016, 04:06 AM
Boa noite pessoal queria saber como zerar todas as varias de uma enum de uma só vez tipo assim:

enum data
{
var1,
var2,
var3,
var4,
var5,
var6,
var7,
var9,
var11,
var12,
var13,
var14
}
new Info[MAX_PLAYERS + 1][data];

public OnGameModeInit()
{
Info[MAX_PLAYERS][data] = 0;
return 1;
}


@edit

OBS: Quero saber se tem como fazer isso sem loop só isso ! Obrigado!!!

Faz isso:
new Info[MAX_PLAYERS + 1][data] = {0, ...}; // Isso faz todas as variáveis ficarem com o valor de 0.

Um outro exemplo:
new Info[MAX_PLAYERS + 1][data] = {1, 2, 3, ....}; // Isso faria continuar a contagem:

var1 seria 1, var2 seria 2, var3 seria 3, var4 seria 4, e assim sucessivamente.

Dayvison_
17/07/2016, 04:09 AM
Não cara, maior cagada fazer isto com loop. o melhor método é este:

{
static rawEnum[data];
info[Celula] = rawEnum;

}

SammyJ
17/07/2016, 02:04 PM
Não cara, maior cagada fazer isto com loop. o melhor método é este:

{
static rawEnum[data];
info[Celula] = rawEnum;

}


Obrigado a todos ai.
mais eu só conseguir com loop mesmo.

for(new i; i; < MAX_CASAS; i++)
{
static rawEnum[data];
sInfo[i] = rawEnum;
}


Nossa mano namora, assim e muito melhor de fazer. eu fazia assim para zerar variaveis array


for(new i; i; < MAX_CASAS; i++)
{
Info[i][CasaID] = 0;
Info[i][PosX] = 0.0;
Info[i][PosZ] = 0.0;
Info[i][PosZ] = 0.0;
[...]
}

Locky_
17/07/2016, 08:51 PM
Desta maneira ai é melhor do que esta?

//definição
enum pPerfil {
perfilNome[32],
perfilSobrenome[32],
perfilID,
perfilSkype[32],
perfilCelular[15],
perfilSite[64],
perfilSobre[128],
perfilNascimento[20],
perfilLocal[64]
};
new APlayerPerfil[MAX_PLAYERS][pPerfil];
/// zerando
for(new pPerfil:x; x < pPerfil; x++)
APlayerPerfil[playerid][x] = 0;

SammyJ
17/07/2016, 08:58 PM
Desta maneira ai é melhor do que esta?

//definição
enum pPerfil {
perfilNome[32],
perfilSobrenome[32],
perfilID,
perfilSkype[32],
perfilCelular[15],
perfilSite[64],
perfilSobre[128],
perfilNascimento[20],
perfilLocal[64]
};
new APlayerPerfil[MAX_PLAYERS][pPerfil];
/// zerando
for(new pPerfil:x; x < pPerfil; x++)
APlayerPerfil[playerid][x] = 0;


Eu acredito que assim seja melhor...

enum pPerfil
{
perfilNome[32],
perfilSobrenome[32],
perfilID,
perfilSkype[32],
perfilCelular[15],
perfilSite[64],
perfilSobre[128],
perfilNascimento[20],
perfilLocal[64]
};
new APlayerPerfil[MAX_PLAYERS][pPerfil];

public OnPlayerConnect(playerid)
{
static num[pPerfil];
APlayerPerfil[playerid] = num;
}


@edit
correção.

Dayvison_
17/07/2016, 10:16 PM
Não há necessidades de igualar uma variavel a zero em sua criação. Muito menos uma estática(Já que não vai funcionar a partir da seg vez)

Locky_
18/07/2016, 01:51 PM
Não há necessidades de igualar uma variavel a zero em sua criação. Muito menos uma estática(Já que não vai funcionar a partir da seg vez)

No caso não era na criação, e sim quando o player se desconectasse.. por isso a dúvida em relação a zerar os dados.

Dayvison_
18/07/2016, 03:20 PM
Sua duvida o @glenderson confirmou. porém eu o corrigi nisto


static num[pPerfil] = 0;

RockstarL
19/07/2016, 08:18 PM
Veih, eu esqueci...
Quando se cria um câmera em movimento tipo:
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);
return 1;
}
porém eu esqueci como faz para voltar ao normal depois que terminar kk?

SammyJ
19/07/2016, 08:38 PM
Veih, eu esqueci...
Quando se cria um câmera em movimento tipo:
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);
return 1;
}
porém eu esqueci como faz para voltar ao normal depois que terminar kk?



SetCameraBehindPlayer(playerid);

RockstarL
19/07/2016, 08:57 PM
SetCameraBehindPlayer(playerid);


Pois é jovis, porém como coloco no CMD sem ter de criar public?

F1N4L
19/07/2016, 08:59 PM
CMD:camera(playerid)
{
SetCameraBehindPlayer(playerid);
return 1;
}

RockstarL
19/07/2016, 09:04 PM
CMD:camera(playerid)
{
SetCameraBehindPlayer(playerid);
return 1;
}


Não,não assim , bro.
Digo tipo
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"?

F1N4L
20/07/2016, 11:20 AM
Não,não assim , bro.
Digo tipo
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.

RockstarL
20/07/2016, 01:06 PM
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.

moura98
20/07/2016, 06:00 PM
duvida rapida
porque as vezes quando me dão rep um quadrado fica azul e nao verde e nao conta nas minhas reputações?

F1N4L
20/07/2016, 06:14 PM
Te dei +3 rep. Ta mais feliz agora?

Raphaael
20/07/2016, 07:37 PM
Te dei +3 rep. Ta mais feliz agora?

Eu tou triste, poderia me dar 3 tbm?

Dayvison_
20/07/2016, 10:16 PM
@moura98 Por que o membro que te deu reputação tem menos de 100 posts.

OverKiller
21/07/2016, 12:54 AM
Alguém poderia fazer o um código em zcmd o seguinte:

/admins ae aparecia o lista de admins online.

moura98
21/07/2016, 02:47 AM
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.


CMD:admins(playerid, params[])
{
new string[64], name[24];
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][admin] == 1 || PlayerInfo[i][admin] == 2 || PlayerInfo[i][admin] == 3)
{
GetPlayerName(i, name, 24);
format(string, 64, "%s\n", name);
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}", string, "OK","");

}
else
{
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}","{FF0000}Nao tem Administradores Online!{FFFFFF}", "OK","");
}
}
}
return 1;
}

F1N4L
21/07/2016, 11:20 AM
altere as variaveis para a sua.


CMD:admins(playerid, params[])
{
new string[64], name[24];
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][admin] == 1 || PlayerInfo[i][admin] == 2 || PlayerInfo[i][admin] == 3)
{
GetPlayerName(i, name, 24);
format(string, 64, "%s\n", name);
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}", string, "OK","");

}
else
{
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}","{FF0000}Nao tem Administradores Online!{FFFFFF}", "OK","");
}
}
}
return 1;
}


Colocar ShowPlayerDialog em loop?
Já viu o que isso resulta?

moura98
21/07/2016, 12:09 PM
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!

F1N4L
21/07/2016, 12:25 PM
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.

moura98
21/07/2016, 12:42 PM
@f1n4l


strcat(string, "[RCON] %s\n", name); // faz a concatenação


que eu saiba isso nao e possivel, testei realmente n funciona, temos q formatar primeiro

Provavelmente ira funcionar agora:


CMD:admins(playerid, params[])
{
new string[500], str[80], name[23], contador;
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][admin] == 1 || PlayerInfo[i][admin] == 2 || PlayerInfo[i][admin] == 3)
{
GetPlayerName(i, name, 23);
format(str, 80, "[ADMIN]: %s\n",name);
strcat(string, str);
contador++;
}
}
}
if( contador > 0) {
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}",string, "OK","");
}
else{
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}","{FF0000}Nao tem Administradores Online!{FFFFFF}", "OK","");
}
return 1;
}

F1N4L
21/07/2016, 12:46 PM
@f1n4l


strcat(string, "[RCON] %s\n", name); // faz a concatenação


que eu saiba isso nao e possivel, testei realmente n funciona, temos q formatar primeiro

Nossa, deu um lag sobre-humano no meu cérebro.
Eu havia feito em cima do seu e me esqueci de formatar. Thx!

@edit

Eu disse que estava 99% funcional, akele 1% é bem vagaba mesmo...

moura98
21/07/2016, 12:52 PM
Nossa, deu um lag sobre-humano no meu cérebro.
Eu havia feito em cima do seu e me esqueci de formatar. Thx!

@edit

Eu disse que estava 99% funcional, akele 1% é bem vagaba mesmo...
acontece kk


Eu disse que estava 99% funcional, akele 1% é bem vagaba mesmo...

huehueheuheu so nao te dou rep+ pq o site n ta colaborando, haha

Dayvison_
21/07/2016, 01:32 PM
Eu já uso diferente k

stock strcatf(dest[], maxlength = sizeof(dest), const fmat[], va_args<>) {
va_formatex(gs_Buffer_3, _, fmat, va_start<3>);

strcat(dest, gs_Buffer_3, maxlength);
}

F1N4L
21/07/2016, 01:40 PM
Eu já uso diferente k

stock strcatf(dest[], maxlength = sizeof(dest), const fmat[], va_args<>) {
va_formatex(gs_Buffer_3, _, fmat, va_start<3>);

strcat(dest, gs_Buffer_3, maxlength);
}


lool
Qual a include utilizada?

Dayvison_
21/07/2016, 01:54 PM
y_va -> Y_Less
formatex -> Slice

OverKiller
21/07/2016, 04:31 PM
@f1n4l


strcat(string, "[RCON] %s\n", name); // faz a concatenação


que eu saiba isso nao e possivel, testei realmente n funciona, temos q formatar primeiro

Provavelmente ira funcionar agora:


CMD:admins(playerid, params[])
{
new string[500], str[80], name[23], contador;
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][admin] == 1 || PlayerInfo[i][admin] == 2 || PlayerInfo[i][admin] == 3)
{
GetPlayerName(i, name, 23);
format(str, 80, "[ADMIN]: %s\n",name);
strcat(string, str);
contador++;
}
}
}
if( contador > 0) {
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}",string, "OK","");
}
else{
ShowPlayerDialog(playerid, dialog_admins, DIALOG_STYLE_MSGBOX, "{FFA500}Administradores Online: {FFFFFF}","{FF0000}Nao tem Administradores Online!{FFFFFF}", "OK","");
}
return 1;
}



Valeu chará. só vou aperfessuar mais um pouco, mais muito obg pela base. abraços!

OverKiller
21/07/2016, 10:26 PM
Alguém pode fazer o comando de /relatorio, ae quem estive-se logado no rcon viria, pfv dai tirarei muita base nisso!

SammyJ
21/07/2016, 11:48 PM
Básico dos Básicos...

CMD:relatorio(playerid, params[])
{
new message[128], pName[MAX_PLAYER_NAME];
if(sscanf(params, "s[128]", message))
return SendClientMessage(playerid, 0x828282FF, "Uso Correto: /relatorio [message]");

GetPlayerName(playerid, pName, MAX_PLAYERS);
for(new i; i < MAX_PLAYERS; ++i)
{
if(IsPlayerAdmin(i))
{
SendClientMessage(i, 0xFFFF00FF, "[RELATORIO] %s enviou um relatorio: %s", pName, message);
}
}
SendClientMessage(playerid, -1, "Os Administradores rcon foram avisado!");
return 1;
}


@edit

* Olhando o código percebei que coloquei o GetPlayerName errado, ele estava getando o nome de cada administrador logado na rcon, quando na verdade era para getar o nome de quem mandou o comando /relatorio;

OverKiller
22/07/2016, 11:01 AM
Básico dos Básicos...

CMD:relatorio(playerid, params[])
{
new message[128], pName[MAX_PLAYER_NAME];
if(sscanf(params, "s[128]", message))
return SendClientMessage(playerid, 0x828282FF, "Uso Correto: /relatorio [message]");

for(new i; i < MAX_PLAYERS; ++i)
{
if(IsPlayerAdmin(i))
{
GetPlayerName(i, pName, MAX_PLAYERS);
SendClientMessage(i, 0xFFFF00FF, "[RELATORIO] %s enviou um relatorio: %s", pName, message);
}
}
SendClientMessage(playerid, -1, "Os Administradores rcon foram avisado!");
return 1;
}


Tank you

RockstarL
22/07/2016, 09:56 PM
Há alguma possibilidade de deixar meus NPC's em todos os 'Virtuals Worlds'?

Derritee1001
31/07/2016, 05:00 PM
Alguém sabe me dizer qual a função que checa se o player está em um modelo de veículo(ID), se caso não tiver ele vai retonar tal coisa?

Whoo
31/07/2016, 05:02 PM
https://wiki.sa-mp.com/wiki/GetPlayerVehicleID // ID do veiculo
https://wiki.sa-mp.com/wiki/GetVehicleModel // modelo do veiculo

Derritee1001
31/07/2016, 06:47 PM
Alguém poderia me ajudar nesse tópico por favor? estou precisando meio urgente desse sistema.

http://forum.sa-mp.com/showthread.php?t=613784

Dishz
01/08/2016, 04:43 AM
Gostaria de saber se tem como colocar duas variáveis em um comando na GM, sendo que as variáveis estão em um FS, ex:
if(CallRemoteFunction("GetPlayerAdminLevel","i",playerid) < 1 || CallRemoteFunction("GetModerador","i",playerid) < 1) return SendClientMessage(playerid, -1," ~ Você não é um administrador!");
Estou usando assim, mas quando uso o comando em uma conta q é apenas moderador, diz que não tenho permissão, e quando uso em um que é admin, tbm diz que não tenho permissão, está correto isso?

F1N4L
01/08/2016, 11:23 AM
Gostaria de saber se tem como colocar duas variáveis em um comando na GM, sendo que as variáveis estão em um FS, ex:
if(CallRemoteFunction("GetPlayerAdminLevel","i",playerid) < 1 || CallRemoteFunction("GetModerador","i",playerid) < 1) return SendClientMessage(playerid, -1," ~ Você não é um administrador!");
Estou usando assim, mas quando uso o comando em uma conta q é apenas moderador, diz que não tenho permissão, e quando uso em um que é admin, tbm diz que não tenho permissão, está correto isso?

Faça um debug e veja qual valor retorna esta função chamada.

JonathanFeitosa
01/08/2016, 08:14 PM
Qual a forma mais rápida de ler arquivos?

Um arquivo com todas as informações juntas ou vários arquivos com apenas com as informações dele próprio?

Fiz um teste de velocidade e com vários arquivos com apenas a informações do mesmo foi a mais rápida. Mas ainda estou indeciso.

F1N4L
01/08/2016, 08:18 PM
Qual a forma mais rápida de ler arquivos?

Um arquivo com todas as informações juntas ou vários arquivos com apenas com as informações dele próprio?

Fiz um teste de velocidade e com vários arquivos com apenas a informações do mesmo foi a mais rápida. Mas ainda estou indeciso.

Raciocinando o trabalho que cada um vai ter:

Lendo vários arquivos:
*Abrir o arquivo;
*Ler o arquivo;
*Fechar o arquivo;

Lendo um arquivo:
*Abrir o arquivo;
*Procurar a informação;
*Fechar o arquivo;

Supondo que seja muitos arquivos, acredito ter um delay maior, não?

JonathanFeitosa
01/08/2016, 08:23 PM
Raciocinando o trabalho que cada um vai ter:

Lendo vários arquivos:
*Abrir o arquivo;
*Ler o arquivo;
*Fechar o arquivo;

Lendo um arquivo:
*Abrir o arquivo;
*Procurar a informação;
*Fechar o arquivo;

Supondo que seja muitos arquivos, acredito ter um delay maior, não?


Aí é que está... Quando ler vários arquivos ele não precisa ler o que está dentro. Basta verificar o nome do arquivo, assim como quase todos os servidores usam em salvamento .ini ou .txt. Ele só ler o que está dentro se ele acha o arquivo que está procurando.

Agora lendo um arquivo, ele vai ler linha por linha até o final....

F1N4L
01/08/2016, 08:29 PM
Aí é que está... Quando ler vários arquivos ele não precisa ler o que está dentro. Basta verificar o nome do arquivo, assim como quase todos os servidores usam em salvamento .ini ou .txt. Ele só ler o que está dentro se ele acha o arquivo que está procurando.

Agora lendo um arquivo, ele vai ler linha por linha até o final....

Agora compreendi.
Se a questão for ler um arquivo ESPECÍFICO e não TODOS, com certeza ler somente o especificado será mais rápido que ler um arquivo por completo e procurar a informação nele contido.
Entendi que iria ler todos os arquivo e não um em específico...

Kimossab
01/08/2016, 11:02 PM
Qual a forma mais rápida de ler arquivos?

Um arquivo com todas as informações juntas ou vários arquivos com apenas com as informações dele próprio?

Fiz um teste de velocidade e com vários arquivos com apenas a informações do mesmo foi a mais rápida. Mas ainda estou indeciso.

Depdende do objetivo.
Só vais ler uma pequena parte do arquivo? Raramente/nunca é precisa a informaçao toda ao mesmo tempo? Em ambos é melhor em separado.

É usual ler a informação toda ao mesmo tempo? É dificil de separar? Estão muito interligados? Então pode compensar ser junto.

Isto são pequenos exemplos gerais. Tens que ver qual o teu objetivo, quais as tuas necessidades. Mas em geral (ou seja, nem sempre é assim) separado é melhor.

Danzou
02/08/2016, 03:27 PM
será que posso criar um novo assunto na linha releases assim como a linha "Screenshots and Videos" sem conter um código fonte ? Gostaria de por algumas imagens tal como as mesmas em minha assinatura no perfil.

eu li as regras, mas entretanto a muitos assuntos na mesma linha sem um código fonte, enfim..

rjjj
02/08/2016, 11:12 PM
Qual a forma mais rápida de ler arquivos?

Um arquivo com todas as informações juntas ou vários arquivos com apenas com as informações dele próprio?

Fiz um teste de velocidade e com vários arquivos com apenas a informações do mesmo foi a mais rápida. Mas ainda estou indeciso.


Para uma quantidade considerável de blocos de informações, há maior otimização em trabalhar com vários arquivos e acessá-los diretamente pelo nome (o que é a 'mágica' desse método, muito comum em sistemas de registro no SA-MP) em comparação com sempre ter que pesquisar informações dentro de um único e cada vez mais extenso arquivo (que também exige o mesmo processo de acesso por nome) :p.



Claro, isso considerando que a mesma técnica de filtragem de strings é empregada em ambos os casos, ou seja, estudando as duas situações a partir de equivalentes caixas-pretas de códigos :mrgreen:.



Porém, vamos supor que 1000 jogadores tivessem que ter seus dados individuais alterados ao mesmo tempo, como quando o servidor é desligado. A técnica com único arquivo poderia ser modificada para atualizar os 1000 jogadores em uma só varredura, ficando vantajosa nessa situação mas desvantajosa em casos mais simples (quando um único jogador desconecta do servidor, por exemplo).



Espero ter ajudado :p.

Dishz
09/08/2016, 12:40 AM
Pessoal, fiz um sistema aq pra salvar a cor do nick do player, está funcinando normal, porém quando uma conta é logada pela primeira vez, ela vem com o nick preto, ai só muda se o player usar o comando para mudar que o sistema vai salvar e tals...

Queria saber como faço pra definir uma cor padrão para todos que logar, já usei SetPlayerColor(playerid, 0xCORFF); em onplayerconnect, mas ele mostra a cor que coloquei no chat kill quando a pessoa loga, mas quando fala no chat está com a cor preta, e quando vc ver em outro jogo a cor do nick em cima da cabeça está em uma cor random do samp.

Eu já usei o Setplayercolor, tanto da GM quando no FS, ja coloquei no FS e na GM e mesmo assim fica, o chat kill qual a cor do setcolor, o nick do chat preto, e o nick em cima da cabeça de uma cor random do samp, no caso laranja.

NathanT
09/08/2016, 08:02 PM
Gostaria de saber algumas dicas para iniciar um servidor Roleplay, estive vendo uns tutoriais e consegui aprender um pouco, queria saber na opinião dos mais experientes o que devo adicionar agora.. Irei deixar abaixo o código da GM que ainda está no início:

/* ==================================================
GAMEMODE COMPLETAMENTE CRIADA POR NATHAN OU ROCK
Especialmente designada para servidor Roleplay
==================================================
- Estou começando á programar em Pawn, tenho muitos projetos bons em mente,
desejo iniciar o meu projeto de servidor Roleplay chamado "San Andreas Roleplay"
*/
//============================================
// <Função para enviar mensagem ao Console

#include <a_samp>

main()
{
print("Olá Mundo !");
return 1;
}
public OnGameModeInit()//Objetos,etc na GM serão lançados aqui
{
// Não use estas linhas se isso for um filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

public OnGameModeExit()//Objetos,etc na GM serão lançados aqui
{
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}

public OnPlayerConnect(playerid)//quando o player conectar
{
return 1;
}

public OnPlayerDisconnect(playerid, reason)//quando o player desconectar
{
return 1;
}

public OnPlayerSpawn(playerid) //quando o player spawnar
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason) //quando o player morrer
{
return 1;
}

public OnVehicleSpawn(vehicleid)//quando o veiculo spawnar
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)//quando o veiculo explodir/cair na água
{
return 1;
}

public OnPlayerText(playerid, text[])//quando o player falar
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[]) // comando do player. Ex: /me, /g
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)/*qnd um player
entrar em um carro*/
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)//qnd sair do carro
{
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate) //sem conhecimento
{
return 1;
}

public OnPlayerEnterCheckpoint(playerid)//qnd player chegar em um cp
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)//qnd o player sair do cp
{
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

public OnRconCommand(cmd[])
{
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
return 1;
}

public OnObjectMoved(objectid)
{
return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

public OnPlayerExitedMenu(playerid)
{
return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}

public OnPlayerUpdate(playerid)
{
return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}

(218 linhas ainda)

RiqueP
10/08/2016, 09:18 PM
Dei uma olhada no plugin socket e fiquei curioso para saber oque ele fazia e fui pesquisar, não entendi muito bem, alguma alma generosa pode me explicar resumidamente?

Locky_
10/08/2016, 11:27 PM
Dei uma olhada no plugin socket e fiquei curioso para saber oque ele fazia e fui pesquisar, não entendi muito bem, alguma alma generosa pode me explicar resumidamente?

É útil para comunicação externas. Eu por exemplo, uso no meu servidor, para receber comunicações do UCP. Alguns comandos são necessários que seja executados no servidor... Assim recebo estes dados, através de socket. É possível criar vários tipos de sistemas, como chat externo, etc... é bem útil

ipsLuan
11/08/2016, 04:22 PM
public OnGameModeExit()//Objetos,etc na GM serão lançados aqui
{
return 1;
}

WTF, Manorango?

RiqueP
11/08/2016, 06:10 PM
É útil para comunicação externas. Eu por exemplo, uso no meu servidor, para receber comunicações do UCP. Alguns comandos são necessários que seja executados no servidor... Assim recebo estes dados, através de socket. É possível criar vários tipos de sistemas, como chat externo, etc... é bem útil
Obrigado, deu para entender melhor, porém restou uma dúvida. Qual o tipo de informação pode ser enviadas? Arquivos por exemplo?

Monotox
11/08/2016, 09:45 PM
Obrigado, deu para entender melhor, porém restou uma dúvida. Qual o tipo de informação pode ser enviadas? Arquivos por exemplo?

Normalmente sockets é majoritariamente utilizado para trafegar informações simples. Um exemplo prático seria uma API de geolocalização. Você se conecta em servidor x, faz uma requisição contendo o IP, e ele te retorna os dados. Tudo isso via web sockets.

https://github.com/Catalin-Mihai/GeoIp-Lite-Version/releases/tag/1.0

RiqueP
12/08/2016, 05:55 PM
Obrigado :D

vinilol321
14/08/2016, 11:12 AM
Fazer um algoritmo para calcular o dobro de um número inteiro natural caso seja par e o triplo caso seja ímpar.
no delphi 7 .

NathanT
14/08/2016, 02:54 PM
public OnGameModeExit()//Objetos,etc na GM serão lançados aqui
{
return 1;
}

WTF, Manorango?

Também estranhei isso depois de uns dias, é que eu tinha visto um vídeo, ou ele falou que objetos seriam jogados aí ou eu entendi errado xD.
Objetos são jogados em "public OnPlayerSpawn(playerid)", correto?
Andei vendo uns vídeos e aprendi mais sobre isso kk.

Whoo
14/08/2016, 03:10 PM
Também estranhei isso depois de uns dias, é que eu tinha visto um vídeo, ou ele falou que objetos seriam jogados aí ou eu entendi errado xD.
Objetos são jogados em "public OnPlayerSpawn(playerid)", correto?
Andei vendo uns vídeos e aprendi mais sobre isso kk.
É em OnGameModeInit e não em OnGameModeExit

SammyJ
15/08/2016, 04:28 AM
Como faço para pegar informações do servidor !
Quantos player online tem etc... Sem ser em SQL

F1N4L
15/08/2016, 11:15 AM
Como faço para pegar informações do servidor !
Quantos player online tem etc... Sem ser em SQL

Se não me engano, o Gato havia feito um tutorial de como enviar informações para um site através de arquivos INI.
Não me recordo o link, qualquer coisa fale com ele.

PT
15/08/2016, 11:25 AM
Sockets

SammyJ
15/08/2016, 02:45 PM
Sockets

Isso Sockets, por acaso tem algum tutorial de como usar? se possível em PT/BR

ipsLuan
15/08/2016, 03:12 PM
Ele fez com a_http.
http://forum.sa-mp.com/showthread.php?t=527893

Dayvison_
15/08/2016, 03:17 PM
Se for: players online, score e ping apenas.
Pode usar a query do samp

SammyJ
15/08/2016, 03:21 PM
Tipo esse site como ele pega as informações do servidor
http://www.game-state.com

ipsLuan
15/08/2016, 03:37 PM
Tipo esse site como ele pega as informações do servidor
http://www.game-state.com
O cara falou aí agora...

http://forum.sa-mp.com/showthread.php?t=99649
http://forum.sa-mp.com/showthread.php?t=104299
https://wiki.sa-mp.com/wiki/Query_Mechanism

SammyJ
15/08/2016, 03:42 PM
O cara falou aí agora...

http://forum.sa-mp.com/showthread.php?t=99649
http://forum.sa-mp.com/showthread.php?t=104299
https://wiki.sa-mp.com/wiki/Query_Mechanism

Vlw ae mano, kk sou novato ainda, vivendo e aprendendo !! ;D

Kanuy
18/08/2016, 05:54 PM
Ao que eu saiba existe limite de 2048 textdraws globais e 256 textdraws por player, queria saber se o limite é alcançado ao exibir as textdraws (ex: um menu que tive-se 2048 textdraws) ou se não pode extrapolar as textdraws no gamemode?

matheusspohr
21/08/2016, 02:06 AM
Fala galera, queria pedir a opinião de vocês...
Estou fazendo alterações no meu GM, e algumas delas serão em textdraw, gostaria de saber o que acharam dessa text que fiz hoje, ta bom? e o que você faria diferente?

http://i.imgur.com/QYSHfgY.png
Obg.

arakuta
21/08/2016, 04:14 PM
@Kanuy

Esta página pode ser útil: https://wiki.sa-mp.com/wiki/Limits

@matheusspohr

Sempre tiver pavor de textdraws muito grandes, ainda mais pra quem tem uma tela um pouco grande como eu, dá uma impressão de exagero.

http://i.imgur.com/Mu85616.png

matheusspohr
21/08/2016, 04:18 PM
@Kanuy
Sempre tiver pavor de textdraws muito grandes, ainda mais pra quem tem uma tela um pouco grande como eu, dá uma impressão de exagero.


Sei que ficou meio grande, mas é o jeito, pois tem algumas perguntas que são bem maiores, e como eu não tinha todas na hora, fiz de um tamanho médio para ter certeza de que caberia pelo menos a maioria...
Mesmo assim, obrigado pela opinião...
Abçs.

Kanuy
21/08/2016, 04:29 PM
@Kanuy

Esta página pode ser útil: https://wiki.sa-mp.com/wiki/Limits


Eu vi isso, o que eu queria saber é se esse limite é alcançado quando é mostrado as textdraws, podendo assim ter infinitas textdraws criadas no gamemode mas só são apenas mostradas dento deste numero limite...

CaioTJF
21/08/2016, 07:15 PM
Os códigos que eu escrevo no notepad++ ficam zuados quando abro eles pelo pawno..
Alguém sabe o que é isso?

Descri��o do Item

Porém se eu abro no notepad++ fica normal
E dentro do jogo também fica normal.

wtf
Meu medo é começar a dar problema dentro do jogo.

Dayvison_
21/08/2016, 09:18 PM
@CaioTJF altera a codificação do arquivo para Western 1252.

@Kanuy, não só pode criar 2048 globais, e 256 por player. Podendo mostrar todas de uma unica vez.

arakuta
22/08/2016, 12:54 AM
@CaioTJF

Eu sempre fiz assim: Formatar > Codificação em ANSI, quando começo a escrever um novo arquivo. Caso já tenha escrito: Formatar > Converter para ANSI

CaioTJF
23/08/2016, 12:13 AM
Funcionou, valeu :)

Kanuy
24/08/2016, 12:09 AM
http://image.prntscr.com/image/0382a849e22141fdaa2a7b095f9891a9.png

Legal sim/não, melhorias?

@edit
*Barra vertical a direita Colete:75%
**Barra horizontal inferior Vida:75%
***A esquerda barra conforme velocidade..

SammyJ
24/08/2016, 01:47 AM
http://image.prntscr.com/image/0382a849e22141fdaa2a7b095f9891a9.png

Legal sim/não, melhorias?

@edit
*Barra vertical a direita Colete:75%
**Barra horizontal inferior Vida:75%
***A esquerda barra conforme velocidade..

Ficou bem bacana mano. Achei diferenciado !

CaioTJF
24/08/2016, 04:32 AM
Só tenta deixar menos colorido

Kanuy
24/08/2016, 12:27 PM
É testei varias cores não ficaram muito boas, talvez mude pra tons de azul menos refletivos
Vou ter que fazer uma versão alternativa pra quem tem mod do hud estilo gta v (quadrado)

PT
26/08/2016, 09:38 PM
E diferente so vai demorar um pouco a se habituarem xD

Dishz
26/08/2016, 10:28 PM
Porque usar cores hexadecimais ao invés das cores do próprio gta? mt feio essas cores fortes, Usa as cores do gta:
~b~
~r~
~y~
etc.

SammyJ
29/08/2016, 03:47 PM
Galera como eu crio um text do tipo hud:radar_girlfriend no TDE by Adri1?

e que eu coloco o nome no text mais não consigo altera a fonte para 4!

@edit


Já conseguir! malz ae

https://www.*******.com/watch?v=13HDdFeJV0E

iLordGG
01/09/2016, 03:25 PM
Qual a diferença de public e stock? quando se usa cada uma delas?

F1N4L
01/09/2016, 04:34 PM
Qual a diferença de public e stock? quando se usa cada uma delas?

Search:
http://forum.sa-mp.com/showthread.php?t=281094

LocoAbreu
03/09/2016, 08:33 PM
# EDIT: PROBLEMA RESOLVIDO...

Whoo
03/09/2016, 08:46 PM
https://wiki.sa-mp.com/wiki/AddStaticVehicleEx

https://wiki.sa-mp.com/wiki/AddStaticVehicle não tem sirene

stock Ips_AddStaticVehicle(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2)
{
new vehicleid = AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2);
EachAdd(VehiclesCreated, vehicleid);
return vehicleid;
}
#if defined _ALS_AddStaticVehicle
#undef AddStaticVehicle
#else
#define _ALS_AddStaticVehicle
#endif
#define AddStaticVehicle Ips_AddStaticVehicle

stock Ips_CreateVehicle(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, timespawn, addsiren=0)
{
new vehicleid = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, timespawn, addsiren);
EachAdd(VehiclesCreated, vehicleid);
return vehicleid;
}
#if defined _ALS_CreateVehicle
#undef CreateVehicle
#else
#define _ALS_CreateVehicle
#endif
#define CreateVehicle Ips_CreateVehicle

stock Ips_AddStaticVehicleEx(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, timespawn, addsiren=0)
{
new vehicleid = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, timespawn, addsiren);
EachAdd(VehiclesCreated, vehicleid);
return vehicleid;
}

LocoAbreu
03/09/2016, 08:55 PM
https://wiki.sa-mp.com/wiki/AddStaticVehicleEx

https://wiki.sa-mp.com/wiki/AddStaticVehicle não tem sirene

stock Ips_AddStaticVehicle(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2)
{
new vehicleid = AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2);
EachAdd(VehiclesCreated, vehicleid);
return vehicleid;
}
#if defined _ALS_AddStaticVehicle
#undef AddStaticVehicle
#else
#define _ALS_AddStaticVehicle
#endif
#define AddStaticVehicle Ips_AddStaticVehicle

stock Ips_CreateVehicle(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, timespawn, addsiren=0)
{
new vehicleid = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, timespawn, addsiren);
EachAdd(VehiclesCreated, vehicleid);
return vehicleid;
}
#if defined _ALS_CreateVehicle
#undef CreateVehicle
#else
#define _ALS_CreateVehicle
#endif
#define CreateVehicle Ips_CreateVehicle

stock Ips_AddStaticVehicleEx(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, timespawn, addsiren=0)
{
new vehicleid = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, timespawn, addsiren);
EachAdd(VehiclesCreated, vehicleid);
return vehicleid;
}



Fiz isso e deu certo.. Valeu ae pela ajuda ;)

CaioTJF
04/09/2016, 12:02 AM
What the hell is EachAdd?

Dayvison_
04/09/2016, 12:15 AM
What the hell is EachAdd?

Uma função de uma include (http://forum.sa-mp.com/showthread.php?t=469804) similar a y_iterate do Y_less feita por ips bruno.

JonathanFeitosa
04/09/2016, 12:51 AM
https://www.*******.com/watch?v=wXrgIuZatqc

https://www.*******.com/watch?v=SgY2O515FBs

Fake ou nens? De IP e kick...

Dayvison_
04/09/2016, 12:57 AM
Fake

Hayzer
04/09/2016, 12:38 PM
Não é fake, tem uma extensão para o cleo que fizeram a um tempo atrás, que permite editar informações do client do samp, pode pesquisar ai, se chama sampfuncs.asi e funciona junto com o cleo

JonathanFeitosa
04/09/2016, 02:29 PM
Não é fake, tem uma extensão para o cleo que fizeram a um tempo atrás, que permite editar informações do client do samp, pode pesquisar ai, se chama sampfuncs.asi e funciona junto com o cleo

Manda por mensagem privada? Sampfuncs existem milhoes

Ender_
08/09/2016, 04:11 PM
Bom.. Uma duvida que sempre tive.. ao começar a usar zCMD

acho que todos sabem q strcmp tem como usar 2 comando para a mesma função..
exemploif(!strcmp(cmd, "/limparchat", true) || !strcmp(cmd, "/lc", true))
{
return 1;
}

será que no zCMD tem como fazer o mesmo ?
CMD:limparchat(playerid, params[])
{
return 1;
}

Whoo
08/09/2016, 04:40 PM
tem..
command(lc, playerid, params[]) return cmd_limparchat(playerid, params);

agora em pawn.cmd é bem mais interessante...


#include <Pawn.CMD>

cmd:help(playerid, params[])
{
// code here
return 1;
}
alias:help("commands", "cmds", "menu"); // case insensitive

Derritee1001
08/09/2016, 07:55 PM
E aí galera, preciso de uma ajuda meio urgente aqui, qual seria o modo correto de usar essa função nesse mesmo estilo que ela está. (( EU SEI QUE ESTÁ ERRADA, MAS EU PRECISO QUE APARECE A STRING VEICULOS NO INICIO DO TEXTO ))


GameTextForPlayer(playerid,"~w~%s ~r~trancado", 2000, 4, veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);

F1N4L
08/09/2016, 07:58 PM
E aí galera, preciso de uma ajuda meio urgente aqui, qual seria o modo correto de usar essa função nesse mesmo estilo que ela está. (( EU SEI QUE ESTÁ ERRADA, MAS EU PRECISO QUE APARECE A STRING VEICULOS NO INICIO DO TEXTO ))


GameTextForPlayer(playerid,"~w~%s ~r~trancado", 2000, 4, veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);


Formata e coloca a string formatada no parâmetro da mensagem

new string[100];
format --> string;
GameTextForPlayer --> string

Derritee1001
08/09/2016, 08:17 PM
Formata e coloca a string formatada no parâmetro da mensagem

new string[100];
format --> string;
GameTextForPlayer --> string

fiz desse jeito:
format(string, sizeof(string), "%s destrancado", veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
GameTextForPlayer(playerid, string, 2000, 4);

e in-game não acontece nada, como se o comando não funcionasse, agora se eu retirar essas duas linhas dai de cima ele funfa de boa.

F1N4L
08/09/2016, 08:20 PM
Mostra o comando...

Derritee1001
08/09/2016, 08:23 PM
Mostra o comando...

CMD:trancar(playerid, params[])
{
static
id = -1;

if (!IsPlayerInAnyVehicle(playerid) && (id = (House_Inside(playerid) == -1) ? (House_Nearest(playerid)) : (House_Inside(playerid))) != -1 && House_IsOwner(playerid, id))
{
if (!HouseData[id][houseLocked])
{
HouseData[id][houseLocked] = true;
House_Save(id);

GameTextForPlayer(playerid,"~w~Casa ~r~trancada", 5000, 6);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
else
{
HouseData[id][houseLocked] = false;
House_Save(id);

GameTextForPlayer(playerid,"~w~Casa ~g~destrancada", 5000, 6);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
}
else if (!IsPlayerInAnyVehicle(playerid) && (id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid))) != -1)
{
if (Business_IsOwner(playerid, id))
{
if (!BusinessData[id][bizLocked])
{
BusinessData[id][bizLocked] = true;

Business_Refresh(id);
Business_Save(id);

GameTextForPlayer(playerid,"~w~Empresa ~r~trancada", 5000, 1);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
else
{
BusinessData[id][bizLocked] = false;

Business_Refresh(id);
Business_Save(id);

GameTextForPlayer(playerid,"~w~Empresa ~r~destrancada", 5000, 1);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
}
}
else if (!IsPlayerInAnyVehicle(playerid) && (id = (Entrance_Inside(playerid) == -1) ? (Entrance_Nearest(playerid)) : (Entrance_Inside(playerid))) != -1)
{
if (strlen(EntranceData[id][entrancePass]))
{
Dialog_Show(playerid, EntrancePass, DIALOG_STYLE_INPUT, "Senha", "Por favor digite a senha para entrar:", "Selecionar", "Cancelar");
}
}
else if ((id = Car_Nearest(playerid)) != -1)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective,
string[100];

GetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, doors, bonnet, boot, objective);

if (Car_IsOwner(playerid, id) || (PlayerData[playerid][pFaction] != -1 && CarData[id][carFaction] == GetFactionType(playerid)))
{
if (!CarData[id][carLocked])
{
CarData[id][carLocked] = true;
Car_Save(id);

format(string, sizeof(string), "%s trancado", veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
GameTextForPlayer(playerid, string, 2000, 4);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);

SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 1, bonnet, boot, objective);
}
else
{
CarData[id][carLocked] = false;
Car_Save(id);

format(string, sizeof(string), "%s destrancado", veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
GameTextForPlayer(playerid, string, 2000, 4);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);

SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 0, bonnet, boot, objective);
}
}
}
else SendErrorMessage(playerid, "Você não está perto de qualquer coisa que você pode trancar/destrancar.");
return 1;
}

F1N4L
08/09/2016, 08:36 PM
Eu apenas comentei a linha do GameText e coloquei SendMessageToPlayer apenas para ver se o problema está no texto formatado no GameText.
Me diga se mostrou:

CMD:trancar(playerid, params[])
{
static
id = -1;

if (!IsPlayerInAnyVehicle(playerid) && (id = (House_Inside(playerid) == -1) ? (House_Nearest(playerid)) : (House_Inside(playerid))) != -1 && House_IsOwner(playerid, id))
{
if (!HouseData[id][houseLocked])
{
HouseData[id][houseLocked] = true;
House_Save(id);

GameTextForPlayer(playerid,"~w~Casa ~r~trancada", 5000, 6);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
else
{
HouseData[id][houseLocked] = false;
House_Save(id);

GameTextForPlayer(playerid,"~w~Casa ~g~destrancada", 5000, 6);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
}
else if (!IsPlayerInAnyVehicle(playerid) && (id = (Business_Inside(playerid) == -1) ? (Business_Nearest(playerid)) : (Business_Inside(playerid))) != -1)
{
if (Business_IsOwner(playerid, id))
{
if (!BusinessData[id][bizLocked])
{
BusinessData[id][bizLocked] = true;

Business_Refresh(id);
Business_Save(id);

GameTextForPlayer(playerid,"~w~Empresa ~r~trancada", 5000, 1);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
else
{
BusinessData[id][bizLocked] = false;

Business_Refresh(id);
Business_Save(id);

GameTextForPlayer(playerid,"~w~Empresa ~r~destrancada", 5000, 1);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
}
}
else if (!IsPlayerInAnyVehicle(playerid) && (id = (Entrance_Inside(playerid) == -1) ? (Entrance_Nearest(playerid)) : (Entrance_Inside(playerid))) != -1)
{
if (strlen(EntranceData[id][entrancePass]))
{
Dialog_Show(playerid, EntrancePass, DIALOG_STYLE_INPUT, "Senha", "Por favor digite a senha para entrar:", "Selecionar", "Cancelar");
}
}
else if ((id = Car_Nearest(playerid)) != -1)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective,
string[100];

GetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, doors, bonnet, boot, objective);

if (Car_IsOwner(playerid, id) || (PlayerData[playerid][pFaction] != -1 && CarData[id][carFaction] == GetFactionType(playerid)))
{
if (!CarData[id][carLocked])
{
CarData[id][carLocked] = true;
Car_Save(id);

format(string, sizeof(string), "%s trancado", veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
SendClientMessage(playerid, -1, string);
//GameTextForPlayer(playerid, string, 2000, 4);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);

SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 1, bonnet, boot, objective);
}
else
{
CarData[id][carLocked] = false;
Car_Save(id);

format(string, sizeof(string), "%s destrancado", veiculos[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
SendClientMessage(playerid, -1, string);
//GameTextForPlayer(playerid, string, 2000, 4);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);

SetVehicleParamsEx(CarData[id][carVehicle], engine, lights, alarm, 0, bonnet, boot, objective);
}
}
}
else SendErrorMessage(playerid, "Você não está perto de qualquer coisa que você pode trancar/destrancar.");

return 1;
}

ipsLuan
08/09/2016, 09:00 PM
Bom.. Uma duvida que sempre tive.. ao começar a usar zCMD

acho que todos sabem q strcmp tem como usar 2 comando para a mesma função..
exemploif(!strcmp(cmd, "/limparchat", true) || !strcmp(cmd, "/lc", true))
{
return 1;
}

será que no zCMD tem como fazer o mesmo ?
CMD:limparchat(playerid, params[])
{
return 1;
}
Sim, basta fazer um return.


CMD:limparchat(playerid) {
return 1;
}

CMD:lchat(playerid) return cmd_limparchat(playerid);

Derritee1001
10/09/2016, 10:17 PM
@delete

NathanT
11/09/2016, 05:12 PM
Qual a forma para usar uma static após a criação? Exemplo:
Eu fiz um comando usando uma, mas não entendi bem, é um simples comando de kick em zcmd:
Apesar de eu ter feito, não entendi muito bem o uso da estática, você pode criar ela em um comando e em outro comando criar uma variável usando o nome dela sem precisar defini-la ou igualar ela á alguma coisa?

Whoo
11/09/2016, 06:29 PM
Quando quer usar uma variável em varias funções sem declara-las você usa global, statica não são destruídas quando fecha a chave }
http://wiki.sa-mp.com/wiki/Scripting_Basics#static_local

NathanT
11/09/2016, 10:06 PM
Quando quer usar uma variável em varias funções sem declara-las você usa global, statica não são destruídas quando fecha a chave }
http://wiki.sa-mp.com/wiki/Scripting_Basics#static_local

Então uma estática local, ela não se fecha no encerramento de uma chave de uma função em um comando, mas sim no encerramento do comando?

Whoo
11/09/2016, 10:30 PM
Então uma estática local, ela não se fecha no encerramento de uma chave de uma função em um comando, mas sim no encerramento do comando?
@edit

erro meu.. eu tinha falado certo.

ela vai sempre armazenar o seu ultimo valor.. e não é destruida no final do comando, você vai entender..

o primeiro é a var static o segundo vai ser com a var new.


for (new i = 0; i < 3; i++)
{

static
a = 1;
printf("%d", a);
a++;
}

for (new i = 0; i < 3; i++)
{

new
b = 1;
printf("%d", b);
b++;
}

RockstarL
15/09/2016, 05:51 PM
Alguém pode falar o ID de duas coisas?
http://i.imgur.com/MrQWVvY.jpg
O ID do arbusto e o do mato com uma borda branca em baixo das plantas.
Tênkis

F1N4L
15/09/2016, 05:58 PM
Alguém pode falar o ID de duas coisas?
O ID do arbusto e o do mato com uma borda branca em baixo das plantas.
Tênkis

Não seria mais fácil ir até o local com o map editor e selecionar o objeto, se não me engano ele puxa o ID ao selecionar o objeto.

RockstarL
15/09/2016, 06:19 PM
Sim,sim, porém eu não sei onde tem esse objeto, porque eu vi ele em uma imagem.. e me lembrei que tinha ele no samp.

CaioTJF
16/09/2016, 02:55 AM
../modules/inventory/main.inc(118) : warning 200: symbol "@yH_OnPlayerClickPlayerTextDraw" is truncated to 31 characters
../modules/inventory/main.inc(118) : warning 200: symbol "@yH_OnPlayerClickPlayerTextDraw" is truncated to 31 characters

wtf?
To tentando hookar a callback OnPlayerClickPlayerTextDraw e tá dando esse warning, uso YSI 4.0

SammyJ
16/09/2016, 03:02 AM
Acho que o nome da callback não pode ter mais que 31 caracteres.


#if defined _ALS_OnPlayerClickPlayerTD
#undef OnPlayerClickPlayerTextDraw
#else
#define _ALS_OnPlayerClickPlayerTD
#endif

#define OnPlayerClickPlayerTextDraw @yH_OnPlayerClickPlayerTextDraw

#if defined @yH_OnPlayerClickPlayerTextDraw
forward @yH_OnPlayerClickPlayerTextDraw();
#endif

CaioTJF
16/09/2016, 03:09 AM
Era isso mesmo
ty

F1N4L
23/09/2016, 05:59 PM
Alguém sabe como EXPORTAR um banco de dados MySQL para PDF via comando?

Bruno Gabriel
26/09/2016, 03:37 AM
Olá, tenha uma duvida curta, vi uma imagem que mostra o mSelection exibindo nome e preços dos objetos mostrados, como nessa imagem: http://img15.hostingpics.net/pics/501059samp064.png
Alguém sabe como faz isso? Já procurei vários modos para tentar fazer isso mas não tem sucesso.

PedroEduardo
26/09/2016, 01:13 PM
Olá, Estou com uma duvida bem simples até..
Gostaria de saber se tem algum problema eu usar 1 dialogo para tudo .. exemplo

#define DIALOG_REGISTRO 1
if(!DOF2_FileExists(StringContas))
{
format(String, sizeof(String), "Conta: Não registrada.");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{1EB2FC}Registrando...", String, "Registrar", "Sair");
return 1;
}else{
format(String, sizeof(String), "{F1FC14}Conta Registrada");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{FC14E9}Logando...", String, "Logar", "Sair");
return 1;
}
posso usar 1 dialog só definido para varias ShowPlayerDialog, ou vou ter que definir 1 para cada coisa ?
gradicidu

F1N4L
26/09/2016, 02:04 PM
Olá, Estou com uma duvida bem simples até..
Gostaria de saber se tem algum problema eu usar 1 dialogo para tudo .. exemplo

#define DIALOG_REGISTRO 1
if(!DOF2_FileExists(StringContas))
{
format(String, sizeof(String), "Conta: Não registrada.");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{1EB2FC}Registrando...", String, "Registrar", "Sair");
return 1;
}else{
format(String, sizeof(String), "{F1FC14}Conta Registrada");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{FC14E9}Logando...", String, "Logar", "Sair");
return 1;
}
posso usar 1 dialog só definido para varias ShowPlayerDialog, ou vou ter que definir 1 para cada coisa ?
gradicidu

Pode, mas a questão é organização. Por exemplo usando uma variável booleana para verificar o registro e o login:


#define DIALOG_REGISTRO 1

new bool: Registro[500];

if(!DOF2_FileExists(StringContas))
{
format(String, sizeof(String), "Conta: Não registrada.");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{1EB2FC}Registrando...", String, "Registrar", "Sair");
Registro[playerid] = true;
return 1;
}else{
format(String, sizeof(String), "{F1FC14}Conta Registrada");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{FC14E9}Logando...", String, "Logar", "Sair");
Registro[playerid] = false;
return 1;
}


No OnDialogResponse só precisa usar a condição e verificar se a var Registro[playerid] é verdadeira ou falsa e inserir o que vc quer entre as chaves de cada condição, ou seja, um bloco de código para inserir as informações e outro bloco para getar as informações.

Ender_
26/09/2016, 02:08 PM
new bool: Registro[500];
Desnecessário 500...

F1N4L
26/09/2016, 02:12 PM
Desnecessário 500...

Definição de MAX_PLAYERS é 500
Foi exemplo e seu comentário que foi desnecessário!

PedroEduardo
26/09/2016, 02:23 PM
Ok Ok, Favor parar com a "briguinha"
Boa visão F1nal,mais não me foi tão útil.. já que não sei usar variável booleana ..

mais eu entendi por conta próprio.. o porque de não usar só 1 #define Dialog_R...
pois no OnDialogResponse, fazemos um if(dialogid == DIALOG_REGISTRO)
se for igual ao Dialog_registro.. //função ..
se eu usar 1 dialog para 2 coisas.. não vou poder ( não sei explicar.. mais eu entendi já )
obrigado por tentar ajudar :')

F1N4L
26/09/2016, 02:26 PM
Boa visão F1nal,mais não me foi tão útil.. já que não sei usar variável booleana ..

mais eu entendi por conta próprio.. o porque de não usar só 1 #define Dialog_R...
pois no OnDialogResponse, fazemos um if(dialogid == DIALOG_REGISTRO)
se for igual ao Dialog_registro.. //função ..
se eu usar 1 dialog para 2 coisas.. não vou poder ( não sei explicar.. mais eu entendi já )
obrigado por tentar ajudar :')

Não há segredo em var booleana. Com ela só se pode usar dois valores: true e false.

if(Registro[playerid] == true)
{
// code de registro
}
else // se não for = true é porque é false (lógico)
{
// code de login
}

Mas como eu disse: Foque na organização criando dois marcos (Login/Registro).

CaioTJF
28/09/2016, 01:18 AM
Alguém que saiba atualiazr as lib do mysql no centos?

Pra resolver esse erro:

Failed (libmysqlclient.so.18: cannot open shared object file: No such file or directory)

?

Dayvison_
28/09/2016, 01:57 AM
Você precisa instalar o pacote mysqlclient, ou então usar a versão estatica(static) do plugin.

CaioTJF
28/09/2016, 02:15 AM
Meu conhecimento em VPS de 1 a 10 é 2

A versão static está sem bugs atualmente?
Ano passado ela tinha muitos problemas

JPedro
29/09/2016, 02:17 AM
Quais funções que eu usaria para criar uma outra função que retorna o ID do veículo proximo??

:? :?

Exemplo:

Jogador chega perto de um carro e digita /portamalas ou ele chega com um galão de gasolina no inventário para abaster esse veiculo e digita /abastecer


__________________________________________________ ____

Eu usava uma função que não foi feita por min em um outro gamemode, que sempre que eu usava o item "Caixa de Ferramentas" para reparar esse veículo o jogo crashava, o mesmo para outros items que precisavam checar e pegar o id de um veículo proximo

SammyJ
29/09/2016, 03:02 AM
Esse code retorna o menor id do primeiro carro proximo ao playerid.

GetVehicleID(playerid, Float:radius)
{
if(!IsPlayerInAnyVehicle(playerid))
{
new vid = 0, found = 0;
static
Float:PlayerX, Float:PlayerY, Float:PlayerZ, Float:VehicleX, Float:VehicleY, Float:VehicleZ;

GetPlayerPos(playerid, PlayerX, PlayerY, PlayerZ);
while((vid <= MAX_VEHICLES) && (!found))
{
vid++;
GetVehiclePos(vid, VehicleX, VehicleY, VehicleZ);
if ((floatabs(PlayerX-VehicleX) < radius) && (floatabs(PlayerY-VehicleY) < radius) && (floatabs(PlayerZ-VehicleZ) < radius))
{
found = 1;
return vid;
}
}
return INVALID_VEHICLE_ID;
}
return GetPlayerVehicleID(playerid);
}

JPedro
29/09/2016, 03:09 AM
Esse code retorna o menor id do primeiro carro proximo ao playerid.

GetVehicleID(playerid, Float:radius)
{
static
vid;
if(!IsPlayerInAnyVehicle(playerid))
{
new vid = 0;
static
Float:PlayerX, Float:PlayerY, Float:PlayerZ, Float:VehicleX, Float:VehicleY, Float:VehicleZ;

GetPlayerPos(playerid, PlayerX, PlayerY, PlayerZ);
while((vid < MAX_VEHICLES))
{
vid++;
GetVehiclePos(vid, VehicleX, VehicleY, VehicleZ);
if ((floatabs(PlayerX-VehicleX) < radius) && (floatabs(PlayerY-VehicleY) < radius) && (floatabs(PlayerZ-VehicleZ) < radius))
{
return vid;
}
}
}
}


Valeu Glederson :D, se caso não houver nenhum veículo proximo e eu quiser fazer uma checagem para retornar uma mensagem de erro, seria algo assim?

if(GetVehicleID(playerid, 1.0) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "vc n está perto de um veículo");

SammyJ
29/09/2016, 03:10 AM
code corrigido tinha declarado duas var vid;

Valeu Glederson :D, se caso não houver nenhum veículo proximo e eu quiser fazer uma checagem para retornar uma mensagem de erro, seria algo assim?

if(GetVehicleID(playerid, 1.0) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "vc n está perto de um veículo");

no caso essa função ira retornar 0, mais dei um update no code e agora ele retorna INVALID_VEHICLE_ID caso não encontre veiculo proximo!

JPedro
29/09/2016, 03:16 AM
code corrigido tinha declarado duas var vid;



no caso essa função ira retornar 0, mais dei um update no code e agora ele retorna INVALID_VEHICLE_ID caso não encontre veiculo proximo!

A Sua função está retornado o GetPlayerVehicleID, o jogador não precisaria estar dentro de um veículo para retornar essa função?

@EDIT

Fiz uma função assim

stock GetPlayerNearVehicleID(playerid, Float:range)
{
for(new i = 1, j = GetVehiclePoolSize(); i <= j; i++) // Loop nos veículos existentes
{
if(j != INVALID_VEHICLE_ID) // Se o veículo for diferente de um veículo invalido
{
GetVehiclePos(j, Pos[0], Pos[1], Pos[2]); // Pega a coordenada do veículo
if(IsPlayerInRangeOfPoint(playerid, range, Pos[0], Pos[1], Pos[2])) // Verifica se o jogador está na distancia do veículo
{
return j; // Retorna o ID do veículo
}
}
}
return INVALID_VEHICLE_ID; // Retorna Veículo Invalido
}

Ta tudo certo?, ou eu fiz algo de errado?

CaioTJF
29/09/2016, 03:33 AM
Só precaução, troca o INVALID_VEHICLE_ID por IsValidVehicle

SammyJ
29/09/2016, 03:34 AM
A Sua função está retornado o GetPlayerVehicleID, o jogador não precisaria estar dentro de um veículo para retornar essa função?

@EDIT

Fiz uma função assim

stock GetPlayerNearVehicleID(playerid, Float:range)
{
for(new i = 1, j = GetVehiclePoolSize(); i <= j; i++) // Loop nos veículos existentes
{
if(j != INVALID_VEHICLE_ID) // Se o veículo for diferente de um veículo invalido
{
GetVehiclePos(j, Pos[0], Pos[1], Pos[2]); // Pega a coordenada do veículo
if(IsPlayerInRangeOfPoint(playerid, range, Pos[0], Pos[1], Pos[2])) // Verifica se o jogador está na distancia do veículo
{
return j; // Retorna o ID do veículo
}
}
}
return INVALID_VEHICLE_ID; // Retorna Veículo Invalido
}

Ta tudo certo?, ou eu fiz algo de errado?

Certinho, e parece mais otimizado também!

JPedro
29/09/2016, 03:49 AM
Certinho, e parece mais otimizado também!

Esse meu código não funcionou, mas mesmo assim obrigado pelo seu tempo e por tentar me ajudar :) +rep

Dei uma procurada aqui no ****** e achei um post onde o Pottus deixou esse code que funciona perfeitamente:

stock GetClosestVehicle(playerid, Float:Range = 100.0)
{
new ClosestVehicle;
new Float:ClosestDist = 100000.0;
new Float:DistX;
new Float:DistY;
new Float:DistZ;
new Float:px;
new Float:py;
new Float:pz;
new Float:CheckDist;

// Get the players position
GetPlayerPos(playerid, px, py, pz);

// Loop through vehicles to find cloest vehicle
for(new i = 0; i < MAX_VEHICLES; i++)
{
// Vehicle doesn't exist
if(!GetVehicleModel(i)) continue;

// Get vehicle position
GetVehiclePos(i, DistX, DistY, DistZ);

// Get the distance
CheckDist = floatsqroot(
floatpower(floatsub(DistX, px), 2.0) +
floatpower(floatsub(DistY, py), 2.0) +
floatpower(floatsub(DistZ, pz), 2.0));

// Distance less than range?
if(CheckDist <= Range)
{
// Distance less than cloest distance, new cloest distance!
if(CheckDist < ClosestDist)
{
ClosestDist = CheckDist;
ClosestVehicle = i;
}
}
}
// Cloest less than or equal to the range return the closest vehicle ID
if(ClosestDist <= Range) return ClosestVehicle;
// no vehichle? return INVALID_VEHICLE_ID
return INVALID_VEHICLE_ID;
}

SammyJ
29/09/2016, 04:01 AM
Esse meu código não funcionou, mas mesmo assim obrigado pelo seu tempo e por tentar me ajudar :) +rep

Dei uma procurada aqui no ****** e achei um post onde o Pottus deixou esse code que funciona perfeitamente:

stock GetClosestVehicle(playerid, Float:Range = 100.0)
{
new ClosestVehicle;
new Float:ClosestDist = 100000.0;
new Float:DistX;
new Float:DistY;
new Float:DistZ;
new Float:px;
new Float:py;
new Float:pz;
new Float:CheckDist;

// Get the players position
GetPlayerPos(playerid, px, py, pz);

// Loop through vehicles to find cloest vehicle
for(new i = 0; i < MAX_VEHICLES; i++)
{
// Vehicle doesn't exist
if(!GetVehicleModel(i)) continue;

// Get vehicle position
GetVehiclePos(i, DistX, DistY, DistZ);

// Get the distance
CheckDist = floatsqroot(
floatpower(floatsub(DistX, px), 2.0) +
floatpower(floatsub(DistY, py), 2.0) +
floatpower(floatsub(DistZ, pz), 2.0));

// Distance less than range?
if(CheckDist <= Range)
{
// Distance less than cloest distance, new cloest distance!
if(CheckDist < ClosestDist)
{
ClosestDist = CheckDist;
ClosestVehicle = i;
}
}
}
// Cloest less than or equal to the range return the closest vehicle ID
if(ClosestDist <= Range) return ClosestVehicle;
// no vehichle? return INVALID_VEHICLE_ID
return INVALID_VEHICLE_ID;
}

Cara desculpa, deitado na cama que pude perceber o erro em seu código.

No GetVehiclePos você colocou a variável "j" que no caso não sofre incremento, ou seja ele tem o valor de GetVehiclePoolSize(); era só mudar para variável "i".

Ficando assim:

stock GetPlayerNearVehicleID(playerid, Float:range)
{
for(new i = 1, j = GetVehiclePoolSize(); i <= j; i++) // Loop nos veículos existentes
{
if(i != INVALID_VEHICLE_ID) // Se o veículo for diferente de um veículo invalido
{
GetVehiclePos(i, Pos[0], Pos[1], Pos[2]); // Pega a coordenada do veículo
if(IsPlayerInRangeOfPoint(playerid, range, Pos[0], Pos[1], Pos[2])) // Verifica se o jogador está na distancia do veículo
{
return i; // Retorna o ID do veículo
}
}
}
return INVALID_VEHICLE_ID; // Retorna Veículo Invalido
}


OBS: Acho o seu code mais otimizado!

JPedro
29/09/2016, 04:13 AM
Cara desculpa, deitado na cama que pude perceber o erro em seu código.

No GetVehiclePos você colocou a variável "j" que no caso não sofre incremento, ou seja ele tem o valor de GetVehiclePoolSize(); era só mudar para variável "i".

Ficando assim:

stock GetPlayerNearVehicleID(playerid, Float:range)
{
for(new i = 1, j = GetVehiclePoolSize(); i <= j; i++) // Loop nos veículos existentes
{
if(i != INVALID_VEHICLE_ID) // Se o veículo for diferente de um veículo invalido
{
GetVehiclePos(i, Pos[0], Pos[1], Pos[2]); // Pega a coordenada do veículo
if(IsPlayerInRangeOfPoint(playerid, range, Pos[0], Pos[1], Pos[2])) // Verifica se o jogador está na distancia do veículo
{
return i; // Retorna o ID do veículo
}
}
}
return INVALID_VEHICLE_ID; // Retorna Veículo Invalido
}


OBS: Acho o seu code mais otimizado!


Valeu cara ;D, sei como é, sempre que eu vou dormir e fico olhando pro teto que eu me toco dessas coisas, quando não sei fazer o sistema que eu quero eu sempre consigo pensar quais funções e como utilizar-las quando estou deitado :cool: , aliás a função funcionou direito aqui no servidor.

NathanT
05/10/2016, 10:44 PM
Como, quando e para que realmente servem as PVars?
Eu havia visto um tutorial em inglês, mas não entendi, também
vi que não há tutoriais sobre isto na board portuguesa do fórum.
Desde já agradeço!!

Dayvison_
06/10/2016, 01:31 AM
Como, quando e para que realmente servem as PVars?
Eu havia visto um tutorial em inglês, mas não entendi, também
vi que não há tutoriais sobre isto na board portuguesa do fórum.
Desde já agradeço!!

Geralmente as pessoas usam quando querem guardar grandes strings, ou apenas por opção mesmo. É exatamente o mesmo que uma variável normal, porém é criado de forma dinâmica, podendo assim ser destruído/recriado no decorrer do gamemode, você pode optar por usa-las, porém eu particulamente não recomendaria para variaveis que vão ser usadas durante todo progresso do jogador, agora como exemplo caso seja para armazenar uma string, pra ser pega após um settimer(Como ele não passa arrays/strings) e nele ser destruida eu usaria :D


Não sei se ficou confuso, se ficou fla q tento explicar melhormente -hehe


Emendando
Tenho uma simples duvida, alguém conhece uma outra forma de mudar o numero após o .(ponto) de um valor flutuante?


format(string, 12, "1.%d", int);
float = floatstr(string);

F1N4L
06/10/2016, 11:18 AM
Emendando
Tenho uma simples duvida, alguém conhece uma outra forma de mudar o numero após o .(ponto) de um valor flutuante?


format(string, 12, "1.%d", int);
float = floatstr(string);


Conheço duas formas, não sei se é exatamente isso que procura (apenas peguei o quociente):

printf("%.0f.%d", Float:Value, IntegerValue);
printf("%d.%d", floatround(Float:Value, floatround_round), IntegerValue);

Dayvison_
06/10/2016, 01:53 PM
@FIN4L é o mesmo método que eu citei RS vlw ae

BobbMarley
09/10/2016, 12:19 AM
Galera porque o ColAndreas é um Plugin bom? eu vi esse vídeo aqui
http://www.*******.com/watch?v=aSabQWqQBkI
e não vi muita coisa, mas pessoas dizem que isto é ótimo pois não sei pra que
alguem pode me tirar essa dúvida? Pelo que ví ao vídeo foi sim um sistema bem Trabalhoso e deve ter umas funções bacanas ai... o problema é que não sei pra que serve kkk

Dayvison_
09/10/2016, 01:01 AM
Ele detecta colisão, por isto é ótimo '-'

SkullFire
09/10/2016, 01:40 AM
solved

TheBob
10/10/2016, 05:38 PM
alguem sabe o id dessa parede? se sim manda um mp ai ficarei agradecido!
http://i.imgur.com/i0dCFUG.jpg

MacMillan_
12/10/2016, 06:45 PM
Estou enfrentando um problema com o Map editor do samp...

Quando vou na ferramenta "Test" aparece no chat
"Warning: couldn't create vehicle type: 522"

Isso começou a aparecer depois que coloquei mais objetos no mapa, e quando tento dar spawn em outro lugar o jogo fecha do nada.. Já tentei reinstalar o jogo e nada!

Código do mapa: http://pastebin.com/iiChe2BU

Whoo
12/10/2016, 06:53 PM
Você deve estar tentando criar uma moto e esta dando erro, se você usa mods ou outra skin da moto pode estar causando isso, não sei se é skin que fala.

MacMillan_
12/10/2016, 07:31 PM
Você deve estar tentando criar uma moto e esta dando erro, se você usa mods ou outra skin da moto pode estar causando isso, não sei se é skin que fala.

Pior que não, não estou usando nenhuma SKIN de moto... Uma coisa que suspeito é a altitude que o mapa tá, que é 2000 e acho que é isso que tá bugando..

RedMF
12/10/2016, 09:17 PM
Pior que não, não estou usando nenhuma SKIN de moto... Uma coisa que suspeito é a altitude que o mapa tá, que é 2000 e acho que é isso que tá bugando..

Oloko pra que um mata tão alto ?

MacMillan_
12/10/2016, 09:24 PM
Oloko pra que um mata tão alto ?

Pra o acesso dele ser só por comando, e pra fazer mega drops :)

RipADO
12/10/2016, 09:50 PM
quem pode me ajudar,desde já agradeço.Tenho um código de uma arena que queria que bloqueasse comandos dentro dela, o comando é esse.

if(strcmp(cmdtext, "/Sniper", true) == 0)
{

new rand = random(sizeof(RandomSpawns));
SetPlayerPos(playerid, RandomSpawns[rand][0], RandomSpawns[rand][1], RandomSpawns[rand][2]);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid, 34, 999); // SNIPER
SetPlayerArmour(playerid, 100.0); // VIDA 100%
SetPlayerHealth(playerid, 100.0); // COLETE 100%
if(TaNoSniper[playerid] == true)
{
SendClientMessage(playerid,0x00FF00FF, "| Você usou /sniper e não pode usar este comando.");
return 1;
}
return 1;

}
if(strcmp(cmdtext, "/sair", false) == 0)
{

if(TaNoSniper[playerid] == false)
SetPlayerPos(playerid,2029.5817,-310.6538,312.5464);
SetPlayerInterior(playerid,0);
ResetPlayerWeapons(playerid);
SetPlayerInterior(playerid, 0);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
ResetPlayerWeapons(playerid);
return 1;
}


}

Whoo
13/10/2016, 03:37 AM
if(strcmp(cmdtext, "teste", false) == 0)
{
/* se ele esta na arena */
if(playerARENA[playerid])
return SendClientMessage(playerid, -1, "Você esta na arena portanto não pode usar comandos.");
/*
se não estiver ... o comando segue
*/
return 1;
}


se não entendeu o exemplo manda a parte do código em que você manda o player para arena e o comando que quer bloquear

RipADO
13/10/2016, 02:38 PM
CÓDIGO QUE TENHO É ESSE ATÉ AGORA..

{
if(TaNoSniper[playerid] == true && strcmp(cmdtext, "/sairarena", true) != 0)
{
SendClientMessage(playerid, 0x00FF00FF,"Você está na arena e só pode digitar /sairarena.");
return 0;
}

if(strcmp(cmdtext, "/Sniper", true) == 0)
{
if(TaNoSniper[playerid])
return SendClientMessage(playerid, -1, "Você esta na arena portanto não pode usar comandos.");
TaNoSniper[playerid] = true; //
new rand = random(sizeof(RandomSpawns));
SetPlayerPos(playerid, RandomSpawns[rand][0], RandomSpawns[rand][1], RandomSpawns[rand][2]);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid, 34, 999); // SNIPER
SetPlayerArmour(playerid, 100.0); // VIDA 100%
SetPlayerHealth(playerid, 100.0); // COLETE 100%
return 1;
}
E O COMANDO DE SAIR DA ARENA

if(strcmp(cmdtext, "/sairarena", true) == 0)
{
if(TaNoSniper[playerid] == false) return SendClientMessage(playerid, -1, "Você não está na Arena.");//Verifica se ele NÃO ESTA na arena, e se não tiver retorna a mensagem
SpawnPlayer(playerid);
SendClientMessage(playerid, -1, "Voce saiu da arena.");
TaNoSniper[playerid] = false; //Seta a variavel pra false, indicando que ele nao está na arena
return 1;
}
}

DA UMA MORAL POR FAVOR

BobbMarley
13/10/2016, 02:45 PM
Galera, tem algum jeito de integrar MYSQL em uma porta de um Host?

PedroEduardo
14/10/2016, 01:47 PM
Eu não sei aonde eu vi.. ou não sei porque estou a pensar assim..
qual é mais indicado fazer ?

stock config()
{
BLA BLA BLA LBA ....
}

ou

config()
{
BLA BLA BLA LBA ....
}

fica mais rápido fora da stock ou algo assim ?

PT
14/10/2016, 02:09 PM
Eu não sei aonde eu vi.. ou não sei porque estou a pensar assim..
qual é mais indicado fazer ?

stock config()
{
BLA BLA BLA LBA ....
}

ou

config()
{
BLA BLA BLA LBA ....
}

fica mais rápido fora da stock ou algo assim ?

Sao coisas diferente e nao ao mesmo tempo.

O uso do "stock" e so no caso de vc nao estar a usar a funcao para o dizer ao compilador para ignorar aquela funcao e nao dar o erro de nunca ser usada.

Mas se vc as usa recomendo usar sem a stock.