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

Carl_Thuse
31/03/2011, 03:08 PM
Porem o objeto não é fixo, ele é criado a partir de um comando.
Então, eu queria poder fazer com que todos os objetos daquele tipo ocorrecem isso, e não só em um objeto.
Tipo: O player usa um comando: /Biribinha. Assim cria um objeto, quando alguem passar em cima desse objeto ele explode. Entende? Seria com CheckArea msm?*-*

LuxurioN™
31/03/2011, 03:27 PM
Porem o objeto não é fixo, ele é criado a partir de um comando.
Então, eu queria poder fazer com que todos os objetos daquele tipo ocorrecem isso, e não só em um objeto.
Tipo: O player usa um comando: /Biribinha. Assim cria um objeto, quando alguem passar em cima desse objeto ele explode. Entende? Seria com CheckArea msm?*-*
Guarde a posição do objeto criado (GetObjectPos (http://wiki.sa-mp.com/wiki/GetObjectPos)) em variáveis. Seguindo a mesma por um temporizador global, do qual, irá verificar se a posição de qualquer jogador (Use Loop) está próximo a posição do objeto criado (Use "IsPlayerInRangeOfPoint (http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint)). Ou use o modo de Área se preferir.

O filterscript Tapete de Pregos (http://forum.sa-mp.com/showthread.php?t=186195) é basicamente o mesmo que você está procurando, cria um objeto com um propósito.

Lós
31/03/2011, 05:01 PM
Tente:

if(JogadorInfo[playerid][jAdmin] < 1)
return SetPlayerPos(playerid, 595.4703,-3556.3552,4.8826);
SetPlayerPos(playerid, 1743.1621,-1862.8766,13.5758);


Não funcionou :(, mas vlw por ajudar :)

Carl_Thuse
31/03/2011, 06:52 PM
E como eu faria isto Luxurion?
Sou novato e não entendi muito bem como fazer isto com variaveis*-*

rjjj
01/04/2011, 06:03 PM
E como eu faria isto Luxurion?
Sou novato e não entendi muito bem como fazer isto com variaveis*-*


Isto deve resolver o seu problema :p.



[Tutorial]Explicaçao De Get - Iniciantes : http://forum.sa-mp.com/showthread.php?t=220883


[Tutorial]Variáveis - Definição, uso e tipos : http://forum.sa-mp.com/showthread.php?t=235924



Espero ter ajudado :p

Carl_Thuse
01/04/2011, 08:38 PM
Rjj, não ficou muito claro. Seria?
new Float:x,Float:y,Float:z;
new Biribinha;
Biribinha = GetObjectPos(Biribinha,x,y,z);
// +/- Isso Rjj? @EDIT
// Queria saber onde colocava alguma coisa assim \/
if(PlayerToPoint(2.0,playerid, /*Biribinha? Onde coloca isso?*/);
{
CreateExplosion(/*Biribinha?*/, 13, 5.0); // É isso msm? '-'
GivePlayerHealth(playerid, 0.0);
SendClientMessage(playerid,COLOR_RED,"BiribinhhaaaAToomicaaa!!");
}
/* Da um help ae *-*/

Carl_Thuse
04/04/2011, 12:14 AM
Malz o Double mas Já que ninguem quer ajudar, poderiam me falar como eu pego cordenada para colocar um objeto no player?
Cordenadas para Attach. Thx

Shadoww5
04/04/2011, 10:31 PM
Eu sei que o "\n" serve para pular uma linha, mas e o "\t" ?

Alem disso, tem algum outro codigo desse tipo ?

[Ips]Guh
04/04/2011, 10:44 PM
Malz o Double mas Já que ninguem quer ajudar, poderiam me falar como eu pego cordenada para colocar um objeto no player?
Cordenadas para Attach. Thx
Usa Hold Studio do Slice..e o melhor para isso...
Eu sei que o "\n" serve para pular uma linha, mas e o "\t" ?

Alem disso, tem algum outro codigo desse tipo ?

Leia no Tutorial de Dialog do Jhonas tem isso:

"Usando o \t

Ai Mais O que é isso ? Nunca Ouvi Falar :C ai meu deus é agora ? Seus Problemas Acabaram ! Irei ensinar como usar ele !
/t Deixa as Listas No Meio Ou Vamos Dizer que é um TAB.*-*
Antes de Começar a Fazer Merda, Veja Como é o \t :
http://oi53.tinypic.com/f4e9fb.jpg
Irei Usar esse DIALOG :
ShowPlayerDialog(playerid, 3944, DIALOG_STYLE_LIST, "Cabeçalho", "Tiririca\nMinha Toalha", "Selecionar", "Fechar");

Aprendendo Sobre o\n Passamos Para Esse, Usando o Exemplo a Cima Vamos La !!

- Tiririca = Lista 1
- Minha Toalha = Lista 2

Definido as Listas, Vamos a Prática.

La em Cima Está Como Vocês Estão Vendo. Vou Por o que Intereça Aqui Para Ver Melhor !



Tiririca\nMinha Toalha



Ai Como Podemos Ver. Agora como Por o \t ??

- Se For No Começo Coloque no Começo
- Se For Depois do Primeiro Basta Colocar o \t DEPOIS DO \n !

Shadoww5
04/04/2011, 11:20 PM
Outra coisa ... Os Logs ficam tudo junto, desta forma:

[ADMIN] Nome_Sobrenome kickou Fulano_Siclano | Motivo: RT [ADMIN] Nome_Sobrenome kickou Maria_Joao [ADMIN] ... e por ai vai ... eu queria saber se tem algum jeito de separar os logs por linhas.

Ja tentei com o \n mas num vai. Se tiverem alguma solução digam, por favor. xD

[Ips]Guh
04/04/2011, 11:52 PM
\n so funfa em dialog..e so criar outro SendClientMessage em baixo com o resto da mensagem...

Shadoww5
05/04/2011, 12:24 AM
Como assim ?

JonathanFeitosa
05/04/2011, 12:37 AM
Guh;1153025']\n so funfa em dialog..e so criar outro SendClientMessage em baixo com o resto da mensagem...

Errado.

é Usado Em Vários Ocasiões Como o 3DTextLabel. Veja Meu Tutorial Que VocÊ Compreende.

Shadoww5
05/04/2011, 12:48 AM
Mas pode ser usado no Log por exemplo ?

E qual é a diferença entre SetTimer e SetTimerEx ?

LuxurioN™
05/04/2011, 12:58 AM
Outra coisa ... Os Logs ficam tudo junto, desta forma:

[ADMIN] Nome_Sobrenome kickou Fulano_Siclano | Motivo: RT [ADMIN] Nome_Sobrenome kickou Maria_Joao [ADMIN] ... e por ai vai ... eu queria saber se tem algum jeito de separar os logs por linhas.

Ja tentei com o \n mas num vai. Se tiverem alguma solução digam, por favor. xD

Só usar "\r\n".

"Mensagem \r\n"

Mas pode ser usado no Log por exemplo ?

E qual é a diferença entre SetTimer e SetTimerEx ?

Sim.

Diferença SetTimer & SetTimerEx (http://forum.sa-mp.com/showpost.php?p=1108074&postcount=4).

Shadoww5
05/04/2011, 01:15 AM
E se eu quisesse colocar uma loteria após o payday ?

Mas ela só seria ativada após 5 minutos depois do payday .. Como eu faço ?

LuxurioN™
05/04/2011, 01:31 AM
E se eu quisesse colocar uma loteria após o payday ?

Mas ela só seria ativada após 5 minutos depois do payday .. Como eu faço ?
Procure por algum sistema de loteria (existem vários) aqui no fórum e tente colocá-lo no seu script. Se realmente não conseguir, pergunte. Ao menos tente... poderá aprender algo.

[Ips]Guh
05/04/2011, 01:37 AM
Errado.

é Usado Em Vários Ocasiões Como o 3DTextLabel. Veja Meu Tutorial Que VocÊ Compreende.
Sim e mesmo Jhonatan..vc esta certo..dei Bobera pq a mto tempo nao mexo com 3DTextLabel e Havia min esquecido dela...

[R] ousenber [K]
06/04/2011, 06:22 PM
Ai alguem ajuda queria saber como retorno essa msg sem dar as DUAS , pq aqui deu as duas e , ai quando entrei envez de falar que tava sem dinheiro falo q comprei , e ainda falo a mensagem que nao tenho dinheiro!

a ss das duas msg: http://img156.imageshack.us/img156/1560/samp162s.th.png (http://img156.imageshack.us/i/samp162s.png/)


if(strcmp(cmdtext, "/kitint", true) == 0)
{
Mensage(playerid, Amarelo, "Comprou Kit Intermediario");
Grana(playerid, -7500); return Mensage(playerid, Azul, "Voce nao tem dinheiro suficiente!");
Arma(playerid, 17, 99999);
Arma(playerid, 40, 99999);
Arma(playerid, 39, 99999);
Arma(playerid, 28, 99999);
Arma(playerid, 26, 99999);
return 1;
}

Shelby
06/04/2011, 06:26 PM
Você deve colocar a mensagem que retornará se o jogador não tiver dinheiro antes da que dirá que ele comprou, deste modo:

if(strcmp(cmdtext, "/kitint", true) == 0)
{
if(GetPlayerMoney(playerid) < 7500) return Mensage(playerid, Azul, "Voce nao tem dinheiro suficiente!");
Mensage(playerid, Amarelo, "Comprou Kit Intermediario");
Arma(playerid, 17, 99999);
Arma(playerid, 40, 99999);
Arma(playerid, 39, 99999);
Arma(playerid, 28, 99999);
Arma(playerid, 26, 99999);
return 1;
}

[R] ousenber [K]
06/04/2011, 06:28 PM
kkk, to aprendendo ai nao sei fazer essas coisas vlw larceny agora deu certo aqui :D

JonathanFeitosa
06/04/2011, 06:30 PM
if(strcmp(cmdtext, "/kitint", true) == 0)
{
Grana(playerid, < -7500); return SendClientMessage(playerid, Azul, "Voce nao tem dinheiro suficiente!");
Mensage(playerid, Amarelo, "Comprou Kit Intermediario");
Arma(playerid, 17, 99999);
Arma(playerid, 40, 99999);
Arma(playerid, 39, 99999);
Arma(playerid, 28, 99999);
return Arma(playerid, 26, 99999);
}

Shadoww5
06/04/2011, 06:50 PM
Tenho um GM que ja veio com um sistema de /virarchave, mas acho que tentaram mexer em algo e fizeram merda.

Tentei de tudo, mas não consigo: Qualquer pessoa pode entrar nos carros das casas, mesmo que não tenham a chave da casa.

Aqui está o codigo de um dos carros:

if(vId==2)
{
if(vehEngine[vId] == 0)
{
if(PlayerInfo[playerid][pPhousekey] == 0 || PlayerInfo[playerid][pJob] == 5 || PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pDonateRank] > 0)
{
TogglePlayerControllable(playerid, 1);
format(string, 256, "%s, ligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
vehEngine[vId] = 1;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1,"Você não tem as chaves, para ligar esse veiculo, digite /sair.");
TogglePlayerControllable(playerid, 0);
return 1;
}
}
else
{
if(PlayerInfo[playerid][pPhousekey] == 0 || PlayerInfo[playerid][pJob] == 5 || PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pDonateRank] > 0)
{
TogglePlayerControllable(playerid, 0);
format(string, 256, "%s, desligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
vehEngine[vId] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1,"Você não tem as chaves, para desligar esse veiculo.");
TogglePlayerControllable(playerid, 1);
return 1;
}
}
}

Se puder ajudar, agradeço.

Shelby
06/04/2011, 06:57 PM
Não entendi muito bem o que você está tentando fazer...
Você quer que qualquer pessoa possa ligar os veículos das casas?
Caso sim, um exemplo(Mas aconselho fazer de um modo global para o comando ficar menor):
if(vId==2)
{
if(vehEngine[vId] == 0)
{
TogglePlayerControllable(playerid, 1);
format(string, 256, "%s, ligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
vehEngine[vId] = 1;
}
else
{
TogglePlayerControllable(playerid, 0);
format(string, 256, "%s, desligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
vehEngine[vId] = 0;
}
}

Shadoww5
06/04/2011, 08:05 PM
Eu queria que so quem pudesse entrar nos carros das casas fosse o dono dela.

Tipo assim: Eu sou o dono da casa 2, então so eu posso entrar no carro daquela casa ... entendeu ?

Shelby
06/04/2011, 08:31 PM
Para isto, precisa saber o ID da casa e o ID do veículo dela, por exemplo, se o ID da casa for o mesmo ID do veículo o código abaixo irá funcionar:
if(vId==2)//ou if(vId==PlayerInfo[playerid][pPhousekey]) para todos os veículos das casas.
{
if(vehEngine[vId] == 0)
{
if(PlayerInfo[playerid][pPhousekey] != vId)//O ID da casa é o mesmo ID do veículo? Se sim, isto irá funcionar.
{
TogglePlayerControllable(playerid, 1);
format(string, 256, "%s, ligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
vehEngine[vId] = 1;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1,"Você não tem as chaves, para ligar esse veiculo, digite /sair.");
TogglePlayerControllable(playerid, 0);
return 1;
}
}
else
{
if(PlayerInfo[playerid][pPhousekey] != vId)
{
TogglePlayerControllable(playerid, 0);
format(string, 256, "%s, desligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
vehEngine[vId] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1,"Você não tem as chaves, para desligar esse veiculo.");
TogglePlayerControllable(playerid, 1);
return 1;
}
}
}

blackshadow
06/04/2011, 09:38 PM
boas
sou novo por aqui e novo tambem a mexer nisto dos servers do samp.... bem indo ao assunto, eu consegui fazer um server e dai fazer pequenas modificações e polo á minha maneira. ja testes o jogo e tudo esta bem só tem o problema que nao consigo resolver.
eu faço login com o meu nick e pelo rcon, ate aqui tudo bem mas eu nao consigo entrar como admin, mexi num ficheiro de configurações que foi criado depois de me registar. onde diz o nivel de admin ja coloquei o nivel 4 que corresponde ao nivel de "dono". faço login normal e diz que me loguei como admin nivel 4 mas quando executo um comando diz que nao tenho autorização como /kick ou /servername ou qualquer outro tipo de comando. conectome pelo rcon mas o efeito é igual.
nao será possivel eu ter acesso aos comandos do server em vez de tar a arranjar filterscripts de admin.
eu queria dar o camando de administração tambem a outro colega mas nao consigo ja que essa opçao /makeadmin tambem me diz que nao tenho autorização de usar apesar de ter o nivel 4.
a quem me poder ajudar agradecia imenço
comprimentos

JonathanFeitosa
06/04/2011, 09:44 PM
AdminLevel=4

ou Seja Admin 4 Caso Queria Mudar Mude.

blackshadow
06/04/2011, 09:51 PM
AdminLevel=4

ou Seja Admin 4 Caso Queria Mudar Mude.

mas a mim nao me covem mudar, eu queria seria eu poder utilizar os comandos de nivel 4 mas nao consigo, esse é o meu problema..... eu queria utilizar os comandos de admin do server e nao dos filters

Shadoww5
06/04/2011, 09:54 PM
Para isto, precisa saber o ID da casa e o ID do veículo dela, por exemplo, se o ID da casa for o mesmo ID do veículo o código abaixo irá funcionar:
if(vId==2)//ou if(vId==PlayerInfo[playerid][pPhousekey]) para todos os veículos das casas.
{
if(vehEngine[vId] == 0)
{
if(PlayerInfo[playerid][pPhousekey] != vId)//O ID da casa é o mesmo ID do veículo? Se sim, isto irá funcionar.
{
TogglePlayerControllable(playerid, 1);
format(string, 256, "%s, ligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
[...]

A chave da casa (pPhousekey) = ao id do carro + 2.

Então se o ID do carro for 3, a chave da casa será 5.

Shelby
06/04/2011, 09:56 PM
if(vId==PlayerInfo[playerid][pPhousekey]-2)//Detalhe
{
if(vehEngine[vId] == 0)
{
if(PlayerInfo[playerid][pPhousekey] != vId+2)//Detalhe
{
TogglePlayerControllable(playerid, 1);
format(string, 256, "%s, ligou o veículo.",sendername);
ProxDetector(20.0,playerid,string,COLOR_PURPLE,COL OR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
[...]

Shadoww5
06/04/2011, 10:42 PM
Ok vo testar e ja digo se funcionou.

Mas pessoal tentei fazer um comando que quando você coloca as coordenadas ele te leva até la.

Coloquei desta forma:

if(strcmp(cmd, "/xyz", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] >= 2)
{
new Float:X, Float:Y, Float:Z;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "USO: /xyz [Coordenadas]");
return 1;
}
SetPlayerPos(playerid,X,Y,Z);
SendClientMessage(playerid, COLOR_GRAD1, " Você foi teleportado !");
}
}
return 1;
}

Mas não ta funfando alguem pode me ajudar ? *-*

LuxurioN™
06/04/2011, 11:06 PM
Ok vo testar e ja digo se funcionou.

Mas pessoal tentei fazer um comando que quando você coloca as coordenadas ele te leva até la.

Coloquei desta forma:

if(strcmp(cmd, "/xyz", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] >= 2)
{
new Float:X, Float:Y, Float:Z;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "USO: /xyz [Coordenadas]");
return 1;
}
SetPlayerPos(playerid,X,Y,Z);
SendClientMessage(playerid, COLOR_GRAD1, " Você foi teleportado !");
}
}
return 1;
}

Mas não ta funfando alguem pode me ajudar ? *-*



if(!strcmp(cmd, "/xyz", true))
{
if(!PlayerInfo[playerid][pAdmin] >= 2)
return SendClientMessage(playerid, Cor, "Comando apenas para Administradores!");

new
tmp[ 128 ]; tmp = strtok(cmdtext, idx);

if(!strlen(tmp)) return SendClientMessage(playerid, Cor, "/xyz X Y Z");
new Float:X = floatstr(tmp);
tmp = strtok(cmdtext, idx);

if(!strlen(tmp)) return SendClientMessage(playerid, Cor, "/xyz X Y Z");
new Float:Y = floatstr(tmp);
tmp = strtok(cmdtext, idx);

if(!strlen(tmp)) return SendClientMessage(playerid, Cor, "/xyz X Y Z");
new Float:Z = floatstr(tmp);

SetPlayerPos(playerid, X,Y,Z);
format(tmp, sizeof(tmp), "Teleportado à posição X %f, Y %f, Z %f!", X, Y, Z);
return SendClientMessage(playerid, Cor, tmp);
}


strtok NÃO É RECOMENDÁVEL, use Zcmd, Y_Command, ou algum outro...

JonathanFeitosa
06/04/2011, 11:06 PM
if(IsPlayerConnected(playerid))

Me Explica Não Corre. Porque Isso ?

Shadoww5
06/04/2011, 11:37 PM
Para que serve o FLOAT:X, FLOAT:Y e o FLOAT:Z e como que eu faço para colocar algum comando que eu queira usar os dados que o player dê no comando ?

Tipo assim, o comando /xyz usou as coordenadas que o player deu, assim como o /depositar usa o numero que o player digita.

Então como eu faço pra colocar um comando neste formato ?

LuxurioN™
07/04/2011, 12:42 AM
Para que serve o FLOAT:X, FLOAT:Y e o FLOAT:Z e como que eu faço para colocar algum comando que eu queira usar os dados que o player dê no comando ?

Tipo assim, o comando /xyz usou as coordenadas que o player deu, assim como o /depositar usa o numero que o player digita.

Então como eu faço pra colocar um comando neste formato ?

Float (Ou Ponto Flutuante) é basicamente a representação dos números reais (Em linguagem de computação). Tais como a posição X,Y,Z de um jogador. Para detectar a posição do jogador e enviá-lo a mesma é apenas a "Leitura e Impressão" dos dados. Sendo a impressão "SetPlayerPos". Existem, várias maneiras de fazer a "leitura", como a usada "strtok", que separa o comando do resultado (após o espaço), e também permite separar os parâmetros do mesmo ([id] [quantia]), não é muito recomendável atualmente por não possuir um bom desempenho e requerir lotes de código para pouca coisa. Recomendo que use "zcmd + sscanf", dos quais fazem isso com uma extrema facilidade. Não vou escrever um tutorial completo aqui porque existem vários aqui no fórum e na internet sobre como criar/usar/desenvolver um comando/função e sobre o uso de variáveis/matrizes. Apenas Pesquise!

Vinicius DarK
09/04/2011, 02:38 PM
Galera estou com uma duvida, Queria saber qual o n° da Key "F11"

JonathanFeitosa
09/04/2011, 03:02 PM
http://wiki.sa-mp.com/wiki/GetPlayerKeys

[Ips]Guh
09/04/2011, 03:21 PM
nao existe ela..mais se tive-se seria Otima para prevenir Chiters...e tbm se os Developers Samp fossem mais Esforçados teria como colocar todas as teclas...

Vinicius DarK
09/04/2011, 10:41 PM
http://wiki.sa-mp.com/wiki/GetPlayerKeys

não achei a Key da Tecla F11

LuxurioN™
09/04/2011, 11:02 PM
não achei a Key da Tecla F11
Todas as teclas disponíveis para uso em SA-MP estão listadas na página: GetPlayerKeys (http://wiki.sa-mp.com/wiki/GetPlayerKeys). Caso a mesma não esteja, não existe. Apenas as teclas de comando usadas pelo GTA:SA são utilizadas e permitidas pela SA-MP atualmente. É, atualmente, impossivel adicionar outras.

Shadoww5
10/04/2011, 03:56 AM
Coloquei essas linhas no meu gm, pois desta forma só eu poderia entrar neste carro ...

if(vId==VipCar[11])
{
if(vehEngine[vId] == 0 || vehEngine[vId] == 1)
{
GetPlayerName(playerid, nome, sizeof nome);
if(strfind(nome, "Shadow_xD", true) == 0)
{
TogglePlayerControllable(playerid, 1);
return 1;
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_GRAD1," Este carro pertence à Shadow_xD ! Vaza dai ¬¬' ");
return 1;
}
}
return 1;
}

Mas qualquer pessoa está conseguindo entrar no veiculo. Alguem tem alguma solução ?

LuxurioN™
10/04/2011, 03:03 PM
Coloquei essas linhas no meu gm, pois desta forma só eu poderia entrar neste carro ...

if(vId==VipCar[11])
{
if(vehEngine[vId] == 0 || vehEngine[vId] == 1)
{
GetPlayerName(playerid, nome, sizeof nome);
if(strfind(nome, "Shadow_xD", true) == 0)
{
TogglePlayerControllable(playerid, 1);
return 1;
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_GRAD1," Este carro pertence à Shadow_xD ! Vaza dai ¬¬' ");
return 1;
}
}
return 1;
}

Mas qualquer pessoa está conseguindo entrar no veiculo. Alguem tem alguma solução ?


public OnPlayerStateChange( playerid , newstate , oldstate )
{
static Nome[ 24 ];
GetPlayerName( playerid , Nome , 24 );

if( GetPlayerVehicleID( playerid ) == VipCar[ 11 ] )
{
if( strfind( Nome, "Shadow_xD" , true ) == 0 )
return TogglePlayerControllable( playerid , 1 );
//Recomendo que remova este "Return" caso você tenha mais códigos que se aplicam
//aos veículos abaixo deste. Do contrário, se esta condicional for verdadeira, eles não serão executados

else return RemovePlayerFromVehicle( playerid ),
SendClientMessage( playerid , Cor , " Este carro pertence à Shadow_xD ! Vaza dai ¬¬' " );
}
return 1;
}

zSuYaNw
10/04/2011, 05:58 PM
if(vId==VipCar[11])
{
if(vehEngine[vId] == 0 || vehEngine[vId] == 1)
{
static nome[24];
if(!strcmp(GetPlayerName(playerid, nome, 24), "Shadow_xD", true))
{
return TogglePlayerControllable(playerid, 1),false;
}
else
{
return RemovePlayerFromVehicle(playerid),SendClientMessag e(playerid, COLOR_GRAD1," Este carro pertence à Shadow_xD ! Vaza dai ¬¬' ") ;
}
}
}

carlosfut3
10/04/2011, 07:42 PM
alguem ajuda ai??
meu gm do nada começo a demora pra loga no server...
...tipo eu ligo o server, entro nele, digito a senha ai fika mo lag..depois de 30 segundos ele abre...
...oq pode ser??

[Ips]Guh
10/04/2011, 08:38 PM
Strings Desnecessarias por exemplo...

Shadoww5
10/04/2011, 10:23 PM
Coloquei uma função no meu servidor onde só quem pode entrar nos carros das casas é o dono daquela casa:

if(vId==2)
{
if(PlayerInfo[playerid][pPhousekey] == 0 || PlayerInfo[playerid][pJob] == 5)
{
TogglePlayerControllable(playerid, 1);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_GRAD5, "Você não tem as chaves deste veiculo !");
}
}

Mas eu queria colocar assim: Se o player não tiver a chave da casa a porta do carro não abre e ele recebe uma mensagem no chat dizendo " Você não tem as chaves deste veículo !".

Eu ja consegui colocar o carro com as portas fechadas, mas quando eu tento entrar no carro não recebo nenhuma mensagem.

Outra coisa: Se vocês repararem coloquei isto pelo ID de cada carro. Mas eu queria colocar algo padrão. Tipo assim ... Se o cara tentar entrar em um carro de casa e a chave do casa dele não for X ele não poderá entrar.

OBS¹: O ID do carro = Chave da casa + 2. Então se o carro for ID 2, a chave da casa deverá ser 4.
OBS²: Só há 63 carros de casas no GM, sendo que, os IDs 0 e 1 não contam.

Shelby
10/04/2011, 10:49 PM
public OnVehicleStreamIn (http://wiki.sa-mp.com/wiki/OnVehicleStreamIn)(vehicleid, forplayerid)
{
if(vehicleid >= 2 && vehicleid <= 65)
{
if(vehicleid != PlayerInfo[playerid][pPhousekey]-2)
{
SetVehicleParamsForPlayer (http://wiki.sa-mp.com/wiki/SetVehicleParamsForPlayer)(vehicleid,forplayerid,0 ,1);
}
}
return 1;
}

public OnPlayerEnterVehicle (http://wiki.sa-mp.com/wiki/OnPlayerEnterVehicle)(playerid, vehicleid, ispassenger)
{
if(vehicleid >= 2 && vehicleid <= 65)
{
if(vehicleid != PlayerInfo[playerid][pPhousekey]-2)
{
SendClientMessage (http://wiki.sa-mp.com/wiki/SendClientMessage)(playerid, -1, "Veículo trancado. Motivo: Ele pertence a uma casa que você não é dono.");
}
}
return 1;
}

Outra coisa: Se vocês repararem coloquei isto pelo ID de cada carro. Mas eu queria colocar algo padrão. Tipo assim ... Se o cara tentar entrar em um carro de casa e a chave do casa dele não for X ele não poderá entrar.

OBS¹: O ID do carro = Chave da casa + 2. Então se o carro for ID 2, a chave da casa deverá ser 4.
Então, você usará deste modo para comparar os veículos das casas:

if(vId==PlayerInfo[playerid][pPhousekey]-2)

StreetGT
12/04/2011, 10:38 PM
nao sei porque mas os meus npc's aparecem com 1 marca no mapa -.-'

JOKERBOY
12/04/2011, 11:25 PM
Como chama a função de Getar o IP ??

[Ips]Guh
12/04/2011, 11:36 PM
Como chama a função de Getar o IP ??
GetPlayerIp = http://wiki.sa-mp.com/wiki/GetPlayerIp

JOKERBOY
13/04/2011, 02:04 PM
Como fasso um comando para teleportar tal pessoa até Tal coordenada e apos 5 minutos ela ir para outra coordenada ?? ((CADEIA))

[S]trong
13/04/2011, 02:26 PM
settimer manolo.

Shadoww5
13/04/2011, 04:20 PM
Para que serve o AddFlitsPaal ?

Carl_Thuse
14/04/2011, 03:22 PM
Como faço para que funções do servidor, não de players, sejam salvadas quando dou um GMX ou desligo o Console? *-* Thx

Falcon.
14/04/2011, 05:53 PM
Para que serve o AddFlitsPaal ?
Olá Shadoww5.

Essa função pertence ao FilterScript ** [FS] Acelerando controle ** por Antironix (http://forum.sa-mp.com/showthread.php?t=15405&highlight=AddFlitsPaal). Pelo que eu entendi somente visualizando o tópico do mesmo, acredito que seja para comparar a velocidade de um player ao passar por um objeto. Verifique o post original para obter maiores informações.



Como faço para que funções do servidor, não de players, sejam salvadas quando dou um GMX ou desligo o Console? *-* Thx
Olá Carl_Thuse.

Para salvar qualquer coisa para ser manipulada logo após finalizar o servidor, você deve utilizar um sistema de salvamento de dados. Atualmente existem vários postados aqui no Fórum samp.
Para melhor atendê-lo diga-nos qual a função que você deseja salvar exatamente. Dependendo dela poderá não ser salva !

Carl_Thuse
14/04/2011, 08:58 PM
Falcon,
Eu queria que salvasse os donos das GZ's, a taxa que é mudada pelo prefeito.
Entende? Não são coisas para serem salvadas em players,
Seria o caso de eu criar um arquivo.txt para salvar estas coisas?
Obg

Falcon.
14/04/2011, 09:21 PM
Olá Carl_Thuse.

Provavelmente você deve usar variáveis para controlar essas coisas. Então basta salvar ela normalmente como salva os dados de players.
Por exemplo salvando a taxa do prefeito. (Dini)


new TaxaPrefeito;

dini_Int("/SaveFuncoes/Prefeitura.ini", "Taxa", TaxaPrefeito);


TaxaPrefeito será a variavel que voce usa para setar o valor dela.
Ai voce criaria em Scriptfiles a pasta: SaveFuncoes..Dentro dela terá o arquivo Prefeitura.ini e dentro dela a tag TaxaPrefeito..Dentro do arquivo Prefeitura.ini voce podera salvar todos os dados da prefeitura..Só seguir o exemplo acima...
Acho que deu para entender.

Carl_Thuse
14/04/2011, 09:33 PM
Sim sim, pensei nisto falcon, mas estava com duvidas pois ainda não havia visto muito como isto.
Obrigado :)

JOKERBOY
15/04/2011, 02:07 AM
Como eu defino o WeatherID do meu server??

Falcon.
15/04/2011, 02:45 AM
Como eu defino o WeatherID do meu server??
Olá JOKERBOY.
Para alterar isto existem duas formas simples:

1º: Logue como Administrador em seu servidor, e após isso utilize o comando: /rcon weather [weather id]
2º Em alguma função que deseje em seu GameMode/FilterScript utilize:
SendRconCommand("weather 1");
Sendo que "1" vai ser o id do weather que deseja. é claro que você poderá fazer de várias outras formas como por exemplo com string:

format(string, sizeof(string), "weather %d", variavel);
SendRconCommand(string);


Sim sim, pensei nisto falcon, mas estava com duvidas pois ainda não havia visto muito como isto.
Obrigado :)
Por nada.

JOKERBOY
15/04/2011, 03:39 AM
Não mais tipo a cada 40 minutos alterna da 50 para a 32 exemplo..

Falcon.
15/04/2011, 04:06 AM
new ClimaAtual;

public OnGameModeInit()
{
SetTimer("AlterarClima", 40*60000, 0x1);
return 0x1
}

forward AlterarClima();
public AlterarClima()
{
++ClimaAtual;
static string[11];
format(string, , "weather %d", ClimaAtual);
SendRconCommand(string);
SendClientMessageToAll("Olhe para o céu, nosso clima mudou");
return 0x1;
}

pGibson
15/04/2011, 09:03 AM
new ClimaAtual;

public OnGameModeInit()
{
SetTimer("AlterarClima", 40*60000, 0x1);
return 0x1
}

forward AlterarClima();
public AlterarClima()
{
++ClimaAtual;
static string[11];
format(string, , "weather %d", ClimaAtual);
SendRconCommand(string);
SendClientMessageToAll("Olhe para o céu, nosso clima mudou");
return 0x1;
}

Isso vai mudar o clima e não o tempo e tem horas que o clima vai bugar por 45 minutos D: (de drogado e tudo rosa)

Shelby
15/04/2011, 11:31 AM
Assim não irá dar problemas(desde que não coloque um ID de um clima que em certo horário fica tudo estranho):

new RandomWeather[][1] =
{
//ID dos climas...
{1},
{2},
{3},
{4},
{8},
{9},
{14},
{7},
{50},
{32}
};

forward AlterarClima();
public AlterarClima()
{
new rand = random (http://wiki.sa-mp.com/wiki/Random)(sizeof(RandomWeather));
static string[20];
format (http://wiki.sa-mp.com/wiki/Format)(string, sizeof(string), "weather %d", RandomWeather[rand]);
SendRconCommand (http://wiki.sa-mp.com/wiki/SendRconCommand)(string);
SendClientMessageToAll (http://wiki.sa-mp.com/wiki/Function:SendClientMessageToAll)(-1, "Olhe para o céu, nosso clima mudou");
return 1;
}

public OnGameModeInit (http://wiki.sa-mp.com/wiki/OnGameModeInit)()
{
SetTimer (http://wiki.sa-mp.com/wiki/SetTimer)("AlterarClima", 2400000, 1);//40 minutos
return 1;
}

Para não precisar ficar esperando 40minutos para ver se funcionou:

CMD:testar(playerid, params[])
{
new rand = random (http://wiki.sa-mp.com/wiki/Random)(sizeof(RandomWeather));
static string[20];
format (http://wiki.sa-mp.com/wiki/Format)(string, sizeof(string), "weather %d", RandomWeather[rand]);
SendRconCommand (http://wiki.sa-mp.com/wiki/SendRconCommand)(string);
SendClientMessageToAll (http://wiki.sa-mp.com/wiki/Function:SendClientMessageToAll)(-1, "Olhe para o céu, nosso clima mudou");
return 1;
}

ou simplesmente:

CMD:testar(playerid, params[])return AlterarClima();

Carl_Thuse
15/04/2011, 11:39 AM
Ae outra duvida simples, como identifico o veiculo mais proximo? OBg

L.S.T
17/04/2011, 12:05 AM
To com um Sistema de Neon Aqui mas quando o carro Explode ou Respawn o Neon Fica como eu fasso para ele sumir?

[Ips]Guh
17/04/2011, 01:14 AM
RemovePlayerAttachedObject(playerid,ID); : Uma base para voce entender,se nao intender olhe a wiki..

LuxurioN™
17/04/2011, 07:44 PM
Ae outra duvida simples, como identifico o veiculo mais proximo? OBg

Códigos Úteis - Veículo mais Próximo! (http://forum.sa-mp.com/showpost.php?p=1169031&postcount=422)

L.S.T
18/04/2011, 03:06 PM
se eu por 2 Gm cada 1 com 500 Obj os Obj Some?

[Ips]Guh
18/04/2011, 03:23 PM
vc quer dizer que se colocar 2 Gm os objetos de um continuara no outro quando ele for trocado e?

[R] ousenber [K]
18/04/2011, 07:34 PM
alguem ajuda eu tinha esse comando no meu outro GM quando mudei coloquei esse no new.pwn(mudei o nome do new ta *--*) agora da warnings olhaé
o comando primeiro:
if(strcmp(cmdtext, "/kitsni", true) == 0)
{
if(Dinheiro(playerid) < 7500) return Mensage(playerid, Azul, "Voce nao tem dinheiro suficiente!");
Mensage(playerid, Color, "Comprou Kit Sniper");
Arma(playerid, 4, 1);
Arma(playerid, 34, 99999);
Arma(playerid, 24,99999);
Arma(playerid, 41,99999);
return 1;
}

Agora os warnings:
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(399) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(399) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(400) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(400) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(401) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(401) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(402) : warning 202: number of arguments does not match definition
C:\Users\Washington\Desktop\GanG WaR DylaN\gamemodes\gangdylan.pwn(402) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


8 Warnings.

Diogo_Bras
18/04/2011, 08:27 PM
Coloque o comando com as definições de origem:
if(strcmp(cmdtext, "/kitsni", true) == 0)
{
if(GetPlayerMoney(playerid) < 7500) return SendClientMessage(playerid, /*Cor*/, "Você não tem dinheiro suficiente!");
SendClientMessage(playerid, /*Cor*/, "Comprou Kit Sniper");
GivePlayerWeapon(playerid, 4, 1);
GivePlayerWeapon(playerid, 34, 99999);
GivePlayerWeapon(playerid, 24,99999);
GivePlayerWeapon(playerid, 41,99999);
return 1;
}

Ou defina no topo do gamemode os "novos termos", para não dar erro:

#define Dinheiro GetPlayerWeapon
#define Mensage SendClientMessage
#define Arma GivePlayerWeapon

if(strcmp(cmdtext, "/kitsni", true) == 0)
{
if(Dinheiro(playerid) < 7500) return Mensage(playerid, /*Cor*/, "Você não tem dinheiro suficiente!");
Mensage(playerid, /*Cor*/, "Comprou Kit Sniper");
Arma(playerid, 4, 1);
Arma(playerid, 34, 99999);
Arma(playerid, 24,99999);
Arma(playerid, 41,99999);
return 1;
}

/*Cor*/ substitui pela cor que quer que a mensagem apareça!

[R] ousenber [K]
18/04/2011, 08:59 PM
os defines eu tinha já so que os warnings sao de numeros vc pd perseber ali na mensagem !

erros acontecem né( vc escreveu errado *-* )

#define Dinheiro GetPlayerWeapon

JOKERBOY
18/04/2011, 11:03 PM
Como chama a função de resetar as armas ??

Josma_cmd
18/04/2011, 11:09 PM
Como chama a função de resetar as armas ??

ResetPlayerWeapons(playerid);

JOKERBOY
18/04/2011, 11:19 PM
THX!

E se tipo, ao cara morrer suas armas não sumirem ?

Carl_Thuse
18/04/2011, 11:31 PM
Custa olhar na Wiki '-'
http://wiki.sa-mp.com <= Tem todas as funções do Pawno ae.

JOKERBOY
18/04/2011, 11:47 PM
Isso não é uma função, ao player morrer continuar com as mesmas armas...

Carl_Thuse
19/04/2011, 12:11 AM
Geta as armas dele, armazena, depois seta novamente o.o

[R] ousenber [K]
19/04/2011, 04:10 PM
gente to com um erro eu tinha esse comando que eu fiz em outro GM, ai fui colocar num aqui e ta dando erro , nao fala q o cara ta sem dinheiro, tipow se eu tiver R$0 e o kit for R$10mil da o kit mesmo assim so que no outro GM nao, o q q ta errado alguem pode falar??

OBS:EU TENHO AS DEFINES SO N TA DANDO A MENSAGEM SE TIVER SEM DINHEIRO E TA COMPRANDO SEM DINHEIRO

if(strcmp(cmdtext, "/kitprof", true) == 0)
{
ResetPlayerWeapons(playerid);
if(SetarDinheiro(playerid) < 10000) return Mensage(playerid, Azul, "Voce nao tem dinheiro suficiente!(R$10000)");
Mensage(playerid, Verde, "Comprou Kit Profissional");
DarArma(playerid, 26, 99999);
DarArma(playerid, 24,99999);
DarArma(playerid, 28,99999);
DarArma(playerid, 31,99999);
return 1;
}

Carl_Thuse
19/04/2011, 04:16 PM
if(SetarDinheiro(playerid) < 10000) return Mensage(playerid, Azul, "Voce nao tem dinheiro suficiente!(R$10000)");
// ERRADO
if(GetPlayerMoney(playerid) < 10000) return Mensage(playerid, Azul, "Voce nao tem dinheiro suficiente!(R$10000)");
// CORRETO

[R] ousenber [K]
19/04/2011, 04:25 PM
mais aqui ta so em portugues!

#define SetarDinheiro GetPlayerMoney

ViniBorn
19/04/2011, 04:47 PM
mais aqui ta so em portugues!

#define SetarDinheiro GetPlayerMoney


Usando isso você simplesmente está verificando o dinheiro do jogador.

Se a idéia é dar/tirar dinheiro use

SetPlayerMoney

Diogo_Bras
19/04/2011, 04:52 PM
Usando isso você simplesmente está verificando o dinheiro do jogador.

Se a idéia é dar/tirar dinheiro use

SetPlayerMoney

SetPlayerMoney irá setar o dineiro, e não dar/retirar ele.

Diogo_Bras
19/04/2011, 05:02 PM
if(!strcmp(cmdtext, "/kitprof", true))
{
if(SetarDinheiro(playerid) < 10000) return Mensage(playeid, Azul, "Você não tem dinheiro suficiente! (R$10000)");
DarArma(playerid, 26, 9999);
DarArma(playerid, 24,9999);
DarArma(playerid, 28,9999);
DarArma(playerid, 31,9999);
Mensage(playerid, Azul, "Kit adquirido!");
return true;
}

Para quê usar em "Português"? Aconselho a usar as originais:
if(!strcmp(cmdtext, "/kitprof", true))
{
if(GetPlayerMoney(playerid) < 10000) return SendClientMessage(playeid, Azul, "Você não tem dinheiro suficiente! (R$10000)");
GivePlayerWeapon(playerid, 26, 9999);
GivePlayerWeapon(playerid, 24, 9999);
GivePlayerWeapon(playerid, 28, 9999);
GivePlayerWeapon(playerid, 31, 9999);
SendClientMessage(playerid, Azul, "Kit adquirido!");
return true;
}

ViniBorn
19/04/2011, 05:28 PM
SetPlayerMoney irá setar o dineiro, e não dar/retirar ele.

Correto.
Deve-se usar também ResetPlayerMoney.

Porém estava me referindo apenas à diferença entre SetPlayerMoney e GetPlayerMoney

[R] ousenber [K]
19/04/2011, 05:52 PM
cara prefiro usar portugues do que ingles , pq da pra lembrar mais facil , e vo tentar o SetPlayerMoney aqui!

@EDIT

Da erro com SetPlayerMoney affsss

Carl_Thuse
19/04/2011, 07:06 PM
Apague estas funções em portugues do seu GM, não é mais facil de lembrar, só irá te atrapalhar!
Se der Erro com SetPlayerMoney usE:
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,QUANTIDADE);

Diogo_Bras
19/04/2011, 07:54 PM
cara prefiro usar portugues do que ingles , pq da pra lembrar mais facil , e vo tentar o SetPlayerMoney aqui!

@EDIT

Da erro com SetPlayerMoney affsss

if(GetPlayerMoney(playerid) < DINHEIRO) é para verificar se o jogador tem ou não o dinheiro suficiente, exemplo:
if(!strcmp(cmdtext, "/Info", true))
{
if(GetPlayerMoney(playerid) > 1)
{
SendClientMessage(playerid, 0xFFF000AA, "Champz, você tem mais do que 1R$ (:");
}
return true;
}

SetPlayerMoney(playerid, DINHEIRO); seta o dinheiro do jogador, exemplo:
if(!strcmp(cmdtext, "/Info", true))
{
SetPlayerMoney(playerid, 1);
SendClientMessage(playerid, 0xFFF000AA, "Seu dinheiro foi setado para 1R$");
return true;
}

GivePlayerMoney(playerid, DINHEIRO); dá dinheiro ao jogador, exemplo:
if(!strcmp(cmdtext, "/Info", true))
{
GivePlayerMoney(playerid, 1);
SendClientMessage(playerid, 0xFFF000AA, "Seu dinheiro foi aumentado (+1R$)");
return true;
}

ResetPlayerMoney(playerid); reseta todo o dinheiro do jogador, exemplo:
if(!strcmp(cmdtext, "/Info", true))
{
ResetPlayerMoney(playerid);
SendClientMessage(playerid, 0xFFF000AA, "Seu dinheiro foi resetado, champz (:");
return true;
}

[R] ousenber [K]
19/04/2011, 07:57 PM
diogo entao tenho que usar GetPlayerMoney no comando pra verificar se ele tem dinheiro ou não?

Diogo_Bras
19/04/2011, 08:51 PM
diogo entao tenho que usar GetPlayerMoney no comando pra verificar se ele tem dinheiro ou não?

Sim, claro que tem... Está aí, porém, não está com as suas definições mas sim com as definições normais do include a_samp:
if(!strcmp(cmdtext, "/kitprof", true))
{
if(GetPlayerMoney(playerid) < 10000) return SendClientMessage(playeid, Azul, "Você não tem dinheiro suficiente! (R$10000)");
GivePlayerWeapon(playerid, 26, 9999);
GivePlayerWeapon(playerid, 24, 9999);
GivePlayerWeapon(playerid, 28, 9999);
GivePlayerWeapon(playerid, 31, 9999);
SendClientMessage(playerid, Azul, "Kit adquirido!");
return true;
}

Ao usar "traduções" apenas irá complicar, acredite :/
Mas se quiser "traduzido", também fiz:
#define CheckarDinheiro GetPlayerMoney
#define EnviarMensagem SendClientMessage
#define DarArma GivePlayerWeapon
#define retornar return
#define verdadeiro true

//OnPlayerCommandText
if(!strcmp(cmdtext, "/kitprof", true))
{
if(CheckarDinheiro(playerid) < 10000) retornar EnviarMensagem(playerid, Azul, "Você não tem dinheiro suficiente! (R$10000)");
DarArma(playerid, 26, 9999);
DarArma(playerid, 24, 9999);
DarArma(playerid, 28, 9999);
DarArma(playerid, 31, 9999);
EnviarMensagem(playerid, Azul, "Kit adquirido!");
retornar verdadeiro;
}

[R] ousenber [K]
19/04/2011, 09:31 PM
nao ta adiantando quando to sem dinheiro nao compra ai manda a mensagem ,mais se eu tenho dinheiro compra so q o dinheiro nao diminui!!!!!

@edit

e tambem agora ta dando que quase todos comandos que eu uso da SERVER:Unknowm command

Diogo_Bras
19/04/2011, 09:34 PM
Podia ter avisado que queria que o dinheiro diminuisse, né?
GivePlayerMoney(playerid, -10000);

[R] ousenber [K]
19/04/2011, 09:40 PM
tá agora deu mais agora ta dando erro que quando digito da assim SERVER:Unknown command

affsss??? esse nigoso ta todo bugado viu >:(

Diogo_Bras
19/04/2011, 09:40 PM
No comando que mandei acima esqueci de um " ! ", está aqui o correto:
if(!strcmp(cmdtext, "/kitprof", true))
{
if(!GetPlayerMoney(playerid) < 10000) return SendClientMessage(playeid, Azul, "Você não tem dinheiro suficiente! (R$10000)");
GivePlayerMoney(playerid, -10000);
GivePlayerWeapon(playerid, 26, 9999);
GivePlayerWeapon(playerid, 24, 9999);
GivePlayerWeapon(playerid, 28, 9999);
GivePlayerWeapon(playerid, 31, 9999);
SendClientMessage(playerid, Azul, "Kit adquirido!");
return true;
}

ou use:
if(!strcmp(cmdtext, "/kitprof", true))
{
if(GetPlayerMoney(playerid) < 10000)
{
GivePlayerMoney(playerid, -10000);
GivePlayerWeapon(playerid, 26, 9999);
GivePlayerWeapon(playerid, 24, 9999);
GivePlayerWeapon(playerid, 28, 9999);
GivePlayerWeapon(playerid, 31, 9999);
SendClientMessage(playerid, Azul, "Kit adquirido!");
}
else return SendClientMessage(playerid, Azul, "Você não tem dinheiro suficiente! (R$10000)");
}

ApolloRJ
20/04/2011, 12:11 PM
qual e msm o comando que poe no OnGameModeInit.. que tira aqueles pontos por manobra?? desde ja agradeço... ApolloRJ

Diogo_Bras
20/04/2011, 01:21 PM
ApolloRJ, está aqui o código que pediu:
EnableStuntBonusForAll(0);

JOKERBOY
20/04/2011, 02:14 PM
Como fasso para o dini carregar o skin apos ele spawnar, porque ele loada, porém carrega o do AddPlayerClas...

Carl_Thuse
20/04/2011, 02:40 PM
Crie a variavel. Sete a variavel para a ID da Roupa. Quando o player logar carregue a variavel e quando deslogar salve-a. Quando ele foi respawnado coloque SetPlayerSkin(playerid, VariavelCriada)

Diogo_Bras
20/04/2011, 05:12 PM
JOKERBOY, já tem vários tópicos sobre isso é só procurar.
Ainda hoje postei aí a alguém que pediu ajuda em Dini, e eu coloquei o link do tutorial que o DraKiNs fez para ensinar (o básico) a usar Dini.

[BEP]AcerPilot
22/04/2011, 03:47 PM
Quero tirar uma dúvida sobre a função SetPlayerHoldingObject. Na wiki, diz que eu só posso atachar 5 objetos por player. No GM, eu utilizo os index 0 até 4, e quando fui utilizar o quinto não funcionou. O que eu quero saber é se o limite é referente a 5 objetos ao mesmo tempo por player ou 5 objetos por player, sendo ou não ao mesmo tempo.

rjjj
22/04/2011, 06:51 PM
AcerPilot;1175213']Quero tirar uma dúvida sobre a função SetPlayerHoldingObject. Na wiki, diz que eu só posso atachar 5 objetos por player. No GM, eu utilizo os index 0 até 4, e quando fui utilizar o quinto não funcionou. O que eu quero saber é se o limite é referente a 5 objetos ao mesmo tempo por player ou 5 objetos por player, sendo ou não ao mesmo tempo.


A função SetPlayerHoldingObject é a mesma SetPlayerAttachedObject atualmente :mrgreen:.


Cada jogador só pode ter 5 objetos fixados no seu corpo, logicamente, ao mesmo tempo, pois para se retirar o objeto do jogador deve-se usar RemovePlayerAttachedObject, que faz com que o index referente ao objeto a ser retirado seja "limpo" junto do objeto que ele carrega e que tem esse index :p.


Em outras palavras é impossível um jogador ter 5 objetos se não forem ao mesmo tempo, pois sempre que 1 sumisse, esse teria o index (que ocupava antes) "limpo" :mrgreen:.


E o que você citou aconteceu por que você fixou 5 objetos em um jogador (cada jogador tem seu index), o que fez com que ele não pudesse mais ter nenhum objeto fixado :p:



Index 0 = 1º Objeto
Index 1 = 2º Objeto
Index 2 = 3º Objeto
Index 3 = 4º Objeto
Index 4 = 5º Objeto


Espero ter ajudado :p.

[BEP]AcerPilot
22/04/2011, 06:54 PM
O problema é que tipo, eu uso um comando para atachar um objeto com index 0, funciona, depois 1, 2, 3 e 4, todos funcionam (sendo um por vez, eu atacho e depois destruo o objeto com RemovePlayerAttachedObject), mas quando vou usar o index 5, mesmo sendo só ele atachado, não funciona, retorna a mensagem de comando desconhecido.

[S]trong
22/04/2011, 08:13 PM
O que é melhor, YCMD ou ZCMD? O que é melhor Djson ou Y_Ini?

Falcon.
22/04/2011, 09:55 PM
Zcmd + sscanf

Fini

ApolloRJ
24/04/2011, 06:42 PM
qual seria o set time de 10 minutos =p seria isso???

SetTimer("DinheiroTempo",600000, true); ??

Falcon.
24/04/2011, 06:48 PM
Olá ApolloRJ.

Basta fazer isto que facilita:
SetTimer("DinheiroTempo", 60000*10, true);

60000 = 60 milionésimos de segundos. >> 60 segundos >> 1 minutos * 10 = 10 minutos

Atenciosmente,
Falcon.

ApolloRJ
24/04/2011, 07:34 PM
+ 1

nO TOPO....
forward DinheiroTempo(playerid);

OnGameModeInit()
SetTimer("DinheiroTempo", 60000*10, true);
( Obrigado =p )



public DinheiroTempo()
{
for(new i=0; i<=MAX_PLAYERS; i++) AddReal(i, 3000); // Quantidade de Grana
SendClientMessageToAll(0xFFFF00FF, "Parabéns! voce recebeu R$ 3000 por jogar aqui"); // Messagem
return 1;
}

////////////////////////////////////

pq a grana vai + o texto n vai o que esta errado ai.. obrigado.. e boa pascoa a todos !!!!

Falcon.
24/04/2011, 07:40 PM
Olá ApolloRJ.

Aqui está:


forward DinheiroTempo();

SetTimer("DinheiroTempo", 60000*10, true);

public DinheiroTempo()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
AddReal(i, 3000);
SendClientMessage(i, 0xFFFF00FF, "Parabéns! voce recebeu R$ 3000 por jogar aqui");
}
return 1;
}

Atenciosamente,
Falcon.

Shadoww5
27/04/2011, 11:40 PM
1 - Eu queria saber as teclas que correspondem a cada codigo do GetPlayerKeys (http://wiki.sa-mp.com/wiki/GetPlayerKeys)

2 - Como eu sei o que eu devo usar dentro do loop. Ex

for(new i = 0; i < MAX_PLAYRES; i++) ...

Eu quero saber qual palavra eu devo colocar no lugar do MAX_PLAYERS para fazer uma função diferente.

3 - Como fazer com que a animação seja mostrada para mim também ? Porque quando coloco o comando da animação só os outros player veem a anim e eu não.

Jhones
28/04/2011, 12:09 AM
Olá pessoal, ouvi falar de 2 coisas "ZCMD e sscanf"

O ZCMD eu já entendi mais ou menos, agora o sscanf eu não entendi nada, não sei pra que serve, e nem como usar..

já usei o search, achei alguns tutoriais mais não entendi nada

steki.
28/04/2011, 01:20 AM
Tipo.

sscanf por espaço(padrão)

mentalize isso como um comando de /setarlevel [id] [level]

new id, level;
if (sscanf(params, "dd", id , level))


esse dd é o que separa. d = integer. São duas int que são separadas e são colocadas em id e level.

Isso retorna 1. se tiver faltando algum parametro. Entende?

The Knight
28/04/2011, 04:36 PM
Shadoww5, faça da seguinte forma:

new Float:jVida[MAX_PLAYERS];
new Float:X, Float:Y, Float:Z;
public OnPlayerKeyStateChange( playerid, newkeys, oldkeys ) //public
{ //abre o public
if( PRESSED( KEY_JUMP ) ) //Irá checkar quando o jogador apertar a tecla KEY_JUMP (para saltar)
{ //abre a função de clicar em KEY_JUMP
GetPlayerPos(playerid, X, Y, Z ); //Pega a coordenada do jogador
SetPlayerPos(playerid, X, Y, Z+15); //Seta o jogador na coordenada que ele está, mas com uma altura de 15
} //fecha a função de clicar em KEY_JUMP
else if( PRESSED( KEY_SPRINT ) ) //Irá checkar quando o jogador apertar a tecla KEY_SPRINT (para correr)
{ //abre a função de clicar em KEY_SPRINT
GetPlayerHealth( playerid, jVida[ playerid ] ); //Pega a vida do jogador
SendClientMessage( playerid, 0xFFF000AA, "Saúde: %f", jVida[ playerid ] ); //Manda uma mensagem para o jogador a dizer quanto vida ele tem
} //fecha a função de clicar em KEY_SPRINT
return true; //retorna o public
} //fecha o public
Isto tudo foi vasiado na samp wiki, é só pesquisar.
Aqui da para ver todas as teclas (no fundo da página): http://wiki.sa-mp.com/wiki/GetPlayerKeys

[AF]Junior
29/04/2011, 12:13 AM
Eu não tenho o que fazer, e quero criar um sistema de membro de honra (tipo um player que joga pra baralho, mais ou menos um vip, rs).

Aí digamos que copiei do sistema vip do knife...

Aí deu esses erros:

C:\Documents and Settings\Luciano\Desktop\Gaming of Life - Gang War\filterscripts\mdr.pwn(226) : error 017: undefined symbol "PlayerInfo"
C:\Documents and Settings\Luciano\Desktop\Gaming of Life - Gang War\filterscripts\mdr.pwn(226) : warning 215: expression has no effect
C:\Documents and Settings\Luciano\Desktop\Gaming of Life - Gang War\filterscripts\mdr.pwn(226) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Luciano\Desktop\Gaming of Life - Gang War\filterscripts\mdr.pwn(226) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Luciano\Desktop\Gaming of Life - Gang War\filterscripts\mdr.pwn(226) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.


Tá aí o "FS":

#include <a_samp>
#include <dini>
#include <streamer>

#if defined FILTERSCRIPT
#pragma tabsize 0

enum pInfo
{
MH
} ;
new PlayerInfo[MAX_PLAYERS][pInfo];
static
zString[128],
sPlayer
;

public OnFilterScriptInit()
{
return 1;
}

#endif

public OnGameModeInit()
{
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerConnect(playerid)
{
Checar ( playerid ) ;
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
Salvar ( playerid ) ;
return 1;
}

public OnPlayerSpawn(playerid)
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}

public OnVehicleSpawn(vehicleid)
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}

public OnPlayerText(playerid, text[])
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}

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

public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
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;
}

//DINI
stock Salvar ( playerid )
{
new file[128] ;
new name[MAX_PLAYER_NAME] ;
GetPlayerName ( playerid , name , sizeof ( name ) ) ;
format ( file , sizeof ( file ) , "Membros/%s.ini" , name ) ;
if ( fexist ( file ) )
{
dini_IntSet ( file , "MH" , PlayerInfo[playerid][MH] ) ;
}
}
stock Checar ( playerid )
{
new file[128] ;
new name[MAX_PLAYER_NAME] ;
GetPlayerName ( playerid , name , sizeof ( name ) ) ;
format ( file , sizeof ( file ) , "Membros/%s.ini" , name ) ;
if ( !fexist ( file ) )
{
dini_Create ( file ) ;
dini_IntSet ( file , "MH" , PlayerInfo[playerid][MH] ) ;
}
if ( fexist ( file ) )
{
PlayerInfo[playerid][MH] = dini_Int ( file , "MH" ) ;
}
}

Procurei até tuto de dini e tal, mas é chato.

Shadoww5
29/04/2011, 12:31 AM
Esses erros estão se referindo à qual linha ?

[AF]Junior
29/04/2011, 12:35 AM
dini_IntSet ( file , "MH" , PlayerInfo[playerid][MH] ) ;

Dessa.

@EDIT

Fiz de novo, do zero, calmamente, sem erros. Resolvido!

Josma_cmd
30/04/2011, 01:33 PM
Duvida:
Tem alguma função que verifica qual o numero de slots que o servidor usa?
Tipo: o numero máximo de players suportados no samp atual é 500, mas vamos supor que o servidor tem 200 slots, uma sintaxe que me da esse valor, que é de 200, como um GetServerSlots(é um exemplo)

Shadoww5
30/04/2011, 01:35 PM
Duvida:
Tem alguma função que verifica qual o numero de slots que o servidor usa?
Tipo: o numero máximo de players suportados no samp atual é 500, mas vamos supor que o servidor tem 200 slots, uma sintaxe que me da esse valor, que é de 200, como um GetServerSlots(é um exemplo)

GetMaxPlayers() (http://wiki.sa-mp.com/wiki/GetMaxPlayers)

diretor7
30/04/2011, 04:08 PM
Josma use o GetMaxPlayers() ele irá mostrar o tanto de slots que o servidor tem.

ga22briel
02/05/2011, 07:31 PM
EU queria saber como eu fasso /elegy, tipo assim, o player digita /elegy cria um elegy pessoal,tuna ele todo.Depois decide pegar outro carro. quando digitar /elegy ira aparecer o seu elegy tunado e o player dentro dele.Tem como de voceis mim ajudarem

deregudegu
02/05/2011, 09:54 PM
@ga22briel
Testa esse:

if (strcmp("/elegy", cmdtext, true, 10) == 0){
if (PlayerInfo[playerid][pAdmin] < 3)
{
SendClientMessage(playerid, COR_ERRO, " Autorização insuficiente !");
return 1;
}else{
new Float:X,Float:Y,Float:Z,Float:Angle, carid;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
carid = GetPlayerVehicleID(playerid);
carid = CreateVehicle(562,X,Y,Z,0.0,-1,-1,9000000);
LinkVehicleToInterior(carid, GetPlayerInterior(playerid));
AddVehicleComponent(carid,1163);
AddVehicleComponent(carid,1036);
AddVehicleComponent(carid,1038);
AddVehicleComponent(carid,1049);
AddVehicleComponent(carid,1040);
AddVehicleComponent(carid,1038);
AddVehicleComponent(carid,1147);
AddVehicleComponent(carid,1010);
AddVehicleComponent(carid,1079);
ChangeVehiclePaintjob(carid,2);
TogglePlayerControllable(playerid,true);
}
}


E

Qual é o FS que da pra fazer textdrawn nele?
eu tinha mas perdi

[AF]Junior
02/05/2011, 10:26 PM
@ga22briel
Testa esse:

if (strcmp("/elegy", cmdtext, true, 10) == 0){
if (PlayerInfo[playerid][pAdmin] < 3)
{
SendClientMessage(playerid, COR_ERRO, " Autorização insuficiente !");
return 1;
}else{
new Float:X,Float:Y,Float:Z,Float:Angle, carid;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
carid = GetPlayerVehicleID(playerid);
carid = CreateVehicle(562,X,Y,Z,0.0,-1,-1,9000000);
LinkVehicleToInterior(carid, GetPlayerInterior(playerid));
AddVehicleComponent(carid,1163);
AddVehicleComponent(carid,1036);
AddVehicleComponent(carid,1038);
AddVehicleComponent(carid,1049);
AddVehicleComponent(carid,1040);
AddVehicleComponent(carid,1038);
AddVehicleComponent(carid,1147);
AddVehicleComponent(carid,1010);
AddVehicleComponent(carid,1079);
ChangeVehiclePaintjob(carid,2);
TogglePlayerControllable(playerid,true);
}
}


E

Qual é o FS que da pra fazer textdrawn nele?
eu tinha mas perdi

Sistema VIP do Knife?

Shadoww5
02/05/2011, 10:33 PM
if (strcmp("/elegy", cmdtext, true, 10) == 0)
{
if (PlayerInfo[playerid][pAdmin] > 3000)
{
new Float:X,Float:Y,Float:Z,Float:Angle, carid;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
carid = GetPlayerVehicleID(playerid);
carid = CreateVehicle(562,X,Y,Z,Angle,-1,-1,9000000);
vehCriados[carid] = 1;
LinkVehicleToInterior(carid, GetPlayerInterior(playerid));
AddVehicleComponent(carid,1163);
AddVehicleComponent(carid,1036);
AddVehicleComponent(carid,1038);
AddVehicleComponent(carid,1049);
AddVehicleComponent(carid,1040);
AddVehicleComponent(carid,1038);
AddVehicleComponent(carid,1147);
AddVehicleComponent(carid,1010);
AddVehicleComponent(carid,1079);
ChangeVehiclePaintjob(carid,2);
TogglePlayerControllable(playerid,true);
format(string, sizeof(string), "Veículo %d, criado.", carid);
SendClientMessage(playerid, 0xAFAFAFAA, string);
PutPlayerInVehicle(playerid,carid,0);
return 1;
}
else return SendClientMessage(playerid, 0xE60000FF, "[ERRO] Você não está autorizado a usar este comando.");
}

Visto que o comando não está ficando da mesma forma como eu o fiz, o link do codigo está aqui:

http://pastebin.com/cLmy0B55

The Knight
03/05/2011, 05:02 PM
Shadoww5, seria mais fácil usar:
if( strcmp( "/elegy", cmdtext, true, 10 ) == 0 )
{
if( !PlayerInfo[ playerid ][ pAdmin ] > 3000 ) return SendClientMessage( playerid, /*Cor*/, "[ERRO] Você não pode acesser a este comando!" );
//Funções para criacão do veículo, ...
return true;
}
Tem else desnecessário!

Shadoww5
03/05/2011, 05:13 PM
Ok. Mas acho do jeito que eu fiz mais bonitinho. =D

Josma_cmd
03/05/2011, 07:51 PM
Shadoww5, seria mais fácil usar:
if( strcmp( "/elegy", cmdtext, true, 10 ) == 0 )
{
if( !PlayerInfo[ playerid ][ pAdmin ] > 3000 ) return SendClientMessage( playerid, /*Cor*/, "[ERRO] Você não pode acesser a este comando!" );
//Funções para criacão do veículo, ...
return true;
}
Tem else desnecessário!


if(strcmp(cmd, "/elegy", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < 3000 ) return SendClientMessage(playerid, /*Cor*/, "Você não pode acesser a este comando!" );
//Funções
return 1;
}

Tem cmdtext, 10 e ! desnecessário
e acesser está errado o certo é acessar

OBS: Do jeito que fiz o comando, só funcionará se tiver o cmd(aquele usado em strtok) no inicio da public OnPlayerCommandText

Ok. Mas acho do jeito que eu fiz mais bonitinho. =D
A identação tá tensa...
Quando for postar um código, não tenta identar ele ao postar, faz identado no pawno depois copia e cola no post, mesmo que antes de mandar o post fique mau identado quando postar vai sair legal, faça o teste, se tentar identar ao postar vai fazer efeito reverso.

[R] ousenber [K]
03/05/2011, 08:10 PM
alguem pode me ajudar?(tomara ashashuasuas)

o erro é que sempre q digito um comando de FS da q o comando nao existi so q o comando funfa!

o comando q ta quando erra o comando é

OBS: TEM COMANDO NO MEIO SO POSTEI A MSG Q DA MAIS SE TIRAR OS COMANDOS FICA DESSE JEITO SEM O RETURN 0;
public OnPlayerCommandText(playerid, cmdtext[])
{
return SendClientMessage(playerid, 0xAA3333AA, "[DRIFT/DM/Freeroam]Comando Desconhecido Pelo Servidor");
}

Outra coisa que queria saber como Blokeio um carro EX:

nao quero que ninguem use o carro 520(HYDRA) se entra no hydra vc morre ou e ejetado(se alguem puder fazer , poderia fazer de morrer q e melhor!)

Josma_cmd
03/05/2011, 08:16 PM
Esse return SendClientMessage tá no GM?
Bom, se tiver, o comando que você digitou tá no FS e não no GM porem a mensagem de que o comando não existe tá no GM então, se você digita um comando que não tá na public OnPlayerCommandText no GM ele identifica como comando não existente e manda a mensagem da return(mesmo tendo na public do FS)

Veja também se o return dos comandos do FS tão corretos.

[R] ousenber [K]
03/05/2011, 08:29 PM
eu acho q ta tudo certo ta tudo com return 1; , mais pra para teria q colocar o SendClientMessage no FS tambem?
------------------------------------ }

Josma_cmd
03/05/2011, 08:30 PM
Acredito que se você colocar SendClientMessage no FS apenas mandaria a mensagem duas vezes, a do GM e a do FS...(Se o comando não existir realmente)
Mas tente, e diga se funcionou.

[R] ousenber [K]
03/05/2011, 08:43 PM
é deu um bug feio kkk, nao bug , mais sim um erro , todos os comandos do GM paro de funfa e os do FS funfo ,comigo colocando o SendClientMessage no FS!

Shadoww5
03/05/2011, 09:15 PM
Outra coisa que queria saber como Blokeio um carro EX:

nao quero que ninguem use o carro 520(HYDRA) se entra no hydra vc morre ou e ejetado(se alguem puder fazer , poderia fazer de morrer q e melhor!)

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
new carid = GetVehicleModel(vehicleid);
if(carid == 520)
{
RemovePlayerFromVehicle(playerid);
SetPlayerHealth(playerid, 0);
return 1;
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new car = GetPlayerVehicleID(playerid);
new carid = GetVehicleModel(car);
if(carid == 520)
{
SetPlayerHealth(playerid, 0);
SendClientMessage(playerid,0xE21212FF," Você não pode entrar em um Hydra !");
return 1;
}
}
return 1;
}

Há duas formas: Caso você escolha a primeira, o jogador será morto antes mesmo de entrar no veiculo. Quando ele apertar ENTER ou F para entrar neste veiculo ele será automaticamente MORTO.

Ja na segunda forma, o jogador será morto somente quando ele ja estiver dentro do HYDRA. Então escolha o que você prefere ...

[R] ousenber [K]
03/05/2011, 09:31 PM
valeu a primeira que eu tava querendo valeu mesmo cara!!!!!

so uma duvida da pra mim colocar mais carros no meio ali ou so repitindo o comando com outro id do carro?

Shadoww5
03/05/2011, 09:36 PM
Note que na quarta linha eu estou comparando o modelo do carro com 520 (modelo do hydra).

Então caso você queira colocar outro carro é so você copiar isto, repetir a função e substituir pelo modelo do veiculo que você deseja.

Shadoww5
03/05/2011, 09:41 PM
if(strcmp(cmd, "/elegy", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < 3000 ) return SendClientMessage(playerid, /*Cor*/, "Você não pode acesser a este comando!" );
//Funções
return 1;
}

Tem cmdtext, 10 e ! desnecessário
e acesser está errado o certo é acessar

OBS: Do jeito que fiz o comando, só funcionará se tiver o cmd(aquele usado em strtok) no inicio da public OnPlayerCommandText


A identação tá tensa...
Quando for postar um código, não tenta identar ele ao postar, faz identado no pawno depois copia e cola no post, mesmo que antes de mandar o post fique mau identado quando postar vai sair legal, faça o teste, se tentar identar ao postar vai fazer efeito reverso.

Eu fiz assim .. Coloquei no Pawno, coloquei no pastebin.com, mas toda hora que eu colocava aqui no forum.sa-mp, o codigo ficava deste jeito, por isso coloque o link do pastebin abaixo.

[R] ousenber [K]
03/05/2011, 09:45 PM
hum... entao ficaria assim , se eu bloqueasse o rhino(432) ?

new carid = GetVehicleModel(vehicleid);
if(carid == 520)
if(carid == 432)
{
RemovePlayerFromVehicle(playerid);
SetPlayerHealth(playerid, 0);
SendClientMessage(playerid , Azul, "Nao use Carros Agressivos ou Sera morto");
return 1;
}

Shadoww5
03/05/2011, 09:58 PM
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
new carid = GetVehicleModel(vehicleid)
if(carid == 520 || carid == 432)
{
RemovePlayerFromVehicle(playerid);
SetPlayerHealth(playerid, 0);
return 1;
}
return 1;
}

Caso queira que a função para os dois veiculos seja a mesma, use o de cima.

Caso não, use o debaixo:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
new carid = GetVehicleModel(vehicleid)
if(carid == 520)
{
RemovePlayerFromVehicle(playerid);
SetPlayerHealth(playerid, 0);
return 1;
}
if(carid == 432)
{
/*FUNÇÃO AQUI*/
return 1;
}
return 1;
}

TheGarfield
03/05/2011, 11:36 PM
Dúvidas Frequêntes


Aqui serão postadas as dúvidas mais conhecidas,
ao tempo atualizarei o tópico para botar mais.

Vamos lá:


Como criar um servidor:
RE: Criando um server/servidor SA-MP (San Andreas Multiplayer)

Como converter objetos
RE: Convertffs (http://www.convertffs.com/)

Aonde acho um gerador de cores ?
RE: OxygenBR's Color Picker v3.0 (http://forum.sa-mp.com/showpost.php?p=990265&postcount=1)

Precisa ter o jogo completo para jogar?
RE: não.

Aonde posso baixar o SA-MP?
RE: SA-MP Download (http://www.sa-mp.com/download.php)

Como Fico sabendo das novidades do SA-MP ?
RE: News and Updates (http://forum.sa-mp.com/forumdisplay.php?f=74)

Quais são os comandos da RCON ?
RE: Controlling Your Server (http://wiki.sa-mp.com/wiki/RCON)

Quais são as funções originais da SA-MP?
RE: Scripting Functions (http://wiki.sa-mp.com/wiki/Category:Scripting_Functions)

Como logar na Rcon em meu servidor?
RE: Entre em seu servidor e digite '/rcon login sua_senha'

SA-MP em linux ?
RE: Linux Server (http://wiki.sa-mp.com/wiki/Linux_Server)

Como aprendo a linguagem pawn?
RE: Pawn Tutorial (http://wiki.amxmodx.org/index.php/Pawn_Tutorial)

Como pego ID de algum interior ?
RE: Digite /interior e aparecerá o interior do devido lugar

Como faço meu servidor aparecer na lista da internet?
RE: abre server.cfg, e mude o announce 0 para annouce 1.

Como eu troco o Unknown command que aparece quando digito comando que não existe?
RE: mude o ultimo return 0; para return Uma mensagem.

Meu script está dando 26 erros, como resolvo?
RE: este erro acontece quando você usa a Chavez({,}) e não fecha. procure o ultimo código que você mecheu.

Como coloco o relógio do meu servidor em tempo real?
RE: use este FilterScript: "gl_realtime.amx" que vem junto com a pasta orignal do sa-mp.


Objetos transparentes como resolver:
RE: Coloque DrawDistance no CreateObject (http://wiki.sa-mp.com/wiki/CreateObject)

Qual programa eu uso para editar PAWN?
RE: aqui está (em inglês) Editores (http://wiki.sa-mp.com/wiki/Scripting_Editors)

Aonde posto códigos ?
RE: pastebin (http://pastebin.com/)

[b]Aonde eu acho as funções SA-MP
RE: Scripting Functions (http://wiki.sa-mp.com/wiki/Category:Scripting_Functions)

Quais são todas as callbacks do SA-MP ?
Re: Scriping CallBacks (http://wiki.sa-mp.com/wiki/Category:Scripting_Callbacks)

Aonde eu aprendo pawn ?
RE: Pawn Tutorial (INGLÊS) (http://wiki.amxmodx.org/index.php/Pawn_Tutorial)

Exemplo de scripts ?
RE: Script Exemples (http://wiki.sa-mp.com/wiki/Script_Examples)



[b] Erros e suas soluções


01 > expected token: Simbolo, but found Simbolo
Re: Esta faltando Simbolo na função.


02 > funcion NOME is not implemented
RE: Função não está completa/ ou está faltando implementos.


03 > function way not have arguments
RE: A função MAIN(); está faltando seus argumentos.


04 > must be a constant expression; assumid zero
RE: o tamanho da array está incorreta dentro de seus [ ].


05 > undefined symbol: PALAVRA.
RE: PALAVRA não definidom, precisas definir #define .... ou new ....



06 > initialization data exceeds declared size
RE: O numero dentro da array está imcompativel com os dentros da chave " new var[5] = { 1,2,3,4,5,6,7,8,9 };"


07 > symbol already defined: NOME
RE: NOME já está definido, ou seja, o COMPILADOR já leu.


08 > array assignment must be simple assignment
RE: Os opreadores ( =>, ++.etc ....) estão sendo usados de forma incorreta.


09 > invalid expression, assumid zero
RE: Expressão errada ou e forma incorreta.


10 > unknown directive
RE: Diretiva com " # " está incorreta ou não existe.


11 > array index out of bounds
RE: A array é muito grande para ser uma array válida ao seu função.


12 > array must be indexed( NOME )
RE: A array foi indexada incorretamente.


13 > invalid string ( possible non-terminated string)
RE: String faltando ");" no final.


14 > duplicate "case" label(numero)
RE: Case duplicado, ou seja, dois case com mesmo numero.


15 > unmatched closing brace
RE: O fechamento com "{" e está faltando "}" no final.


16 > #define pattern must be an array ( argument nome )
RE: A função define está sendo usada incorretamente.


17 > Input line too long ( after substitutions )
RE: a linha está muito grande para o compilador.


19 > warning 219: local variable "playername" shadows a variable at a preceding level
RE: tem mais de 1 playername definido, apague até sobrar 1.


18 > redefinition of constant/macro
RE:Simpls, apenas ta dizendo que algo já foi definido.



Estes são algumas perguntas & erros que me lembro. caso conheça mais alguns, me passe por pm.


Atualizado dia: 06/07/2011
Obrigado.

[R] ousenber [K]
04/05/2011, 02:37 PM
ae queria outra ajudinha :p como que eu coloco pra aparecer o nome da pessoa na msg sei q tem q colocar o %s so q da erro na hora de compilar e tem q ter o GetPlayerName so q tb nao da alguem ajuda?!

Carl_Thuse
04/05/2011, 02:39 PM
new string[128];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),"Mensagem Mandada pelo: %s",playername);
SendClientMessage(playerid,COR,string);
O Pawn é complicado bagarai, podia indetificar na função
SendClientMessage() Parametros como variaveis, nomes etc.

LuxurioN™
04/05/2011, 04:48 PM
new string[128];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),"Mensagem Mandada pelo: %s",playername);
SendClientMessage(playerid,COR,string);
O Pawn é complicado bagarai, podia indetificar na função
SendClientMessage() Parametros como variaveis, nomes etc.

Pawn é uma das linguagens de programação mais fáceis que existe. Como você quer "facilitar", poderia simplesmente criar um Macro ou uma função:

EXEMPLO:

new _str[ 128 ] ;
#define _SendClientMessage(%0,%1,%2,%3) format(_str,sizeof _str,(%2),%3);SendClientMessage((%0),(%1), _str)

Caso for utilizar uma variável local dentro da função:

stock bool:_f = false;
#define _SendClientMessage(%0,%1,%2,%3) do{ new __str[ 128 ];format(__str, sizeof __str, (%2), %3);SendClientMessage((%0),(%1),__str);} while (_f)


Então:

new playername[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, playername, sizeof ( playername ) );
_SendClientMessage( playerid, -1, "Mensagem Mandada pelo: %s",playername );


ÓBVIO que existem outras maneiras, contudo, como eu disse, apenas um exemplo.

[R] ousenber [K]
04/05/2011, 08:52 PM
pawno quando comecei nao achei mt dificil mais quando vc ta criando comandos mais aprofunfados muda muito coisa , e vlw agora mando!

Macintosh
05/05/2011, 01:23 AM
pawno quando comecei nao achei mt dificil mais quando vc ta criando comandos mais aprofunfados muda muito coisa , e vlw agora mando!

Depende se você tiver experiência com alguma linguagem, ou ser um ser super-dotado ou com um Q.I extraordinário para não achar o PAWN uma linguagem díficil. Como diz meu pai, nada é díficil, apenas colocamos criamos a dificuldade.

Josma_cmd
05/05/2011, 02:02 AM
A dificuldade no Pawn está aqui:
Mais de 90% dos iniciantes em Pawn tentam fazer códigos complexos, sem ao menos ter uma noção da base, do que é e pra que serve cada função/sintaxe/variável, e assim, não consegue montar seu código avançado, consequentemente apela pro ctrl + c ctrl + v, o que gera bugs que ele não consegue concertar por não conhecer a estrutura do código, é tudo um ciclo de consequencias, e é raro achar pessoas que concordem que precisam antes de tudo estudar o básico, pra depois evoluir e se aperfeiçoar

JOKERBOY
06/05/2011, 02:18 PM
Como adiciono uma sirene em determinada variavel de carros??

[R] ousenber [K]
06/05/2011, 11:59 PM
A dificuldade no Pawn está aqui:
Mais de 90% dos iniciantes em Pawn tentam fazer códigos complexos, sem ao menos ter uma noção da base, do que é e pra que serve cada função/sintaxe/variável, e assim, não consegue montar seu código avançado, consequentemente apela pro ctrl + c ctrl + v, o que gera bugs que ele não consegue concertar por não conhecer a estrutura do código, é tudo um ciclo de consequencias, e é raro achar pessoas que concordem que precisam antes de tudo estudar o básico, pra depois evoluir e se aperfeiçoar

@OFF disse tudo cara, so q eu tento criar meus comandos so q quando vejo q da di jeito nenhum venho aqui pedir ajuda!

@DUVIDA
agora quero tirar so uma duvida rapida , qual a diferença de um comando termina com return 1; e com termina so com os } no final?

EX terminado em return

if (strcmp("/meucomando", cmdtext, true, 10) == 0)
{
SendClientMessage{playerid , COLOR_LIGHTRED, "Cara nao copia meu comando pq é autoria minha!");
return 1;
}


EX terminado sem return


if (strcmp("/meucomando", cmdtext, true, 10) == 0)
{
SendClientMessage{playerid , COLOR_LIGHTRED, "Cara nao copia meu comando pq é autoria minha!");
}

Transferencia
07/05/2011, 12:12 AM
Usa-se } Depois de Uma funçao em cima do Return apenas quando tem algum If.ou seja.se tiver um If deve ter

}
return 1;
}

o Primeiro e para Fechar o If,e o segundo e para fechar o comando..sako?

[R] ousenber [K]
07/05/2011, 01:44 AM
entao tem q ter return se tiver tipo um IsPlayerInVehicle com o "IF" na frente? mais se n tiver pode deixar sem return?

Josma_cmd
07/05/2011, 01:52 AM
Transferencia, o que você disse é FAIL velho, ou entendi errado ou você explicou errado...

dylan.
vou te dar um exemplo:
if(strcmp(cmd, "/comando", true) == 0)
{
funções
return 1;
}
ele vai executar as funções e retornar certo? MAS, se você não colocar o return ele vai executar as funções e executar o que tiver abaixo das chaves como se fosse parte do mesmo código.

Transferencia
07/05/2011, 01:54 AM
Nao,No caso sem a chave,se usar um if deve ficar estilo assim:

...
if(IsPlayerInAnyVehicle...
{
SendClientMessage(playerid,COR,"BLABLABLA");
}
return 1;
}

Mas se o comando tiver por exemplo so um SendClientMessage,e nao tiver If...nao usa-se a chave para fechar o if no comando.

[R] ousenber [K]
07/05/2011, 01:56 AM
a ta agora entendi ? o return e como se fosse o q fexa o comando se eu entendi direito? pq eu criava comandos sem fexar so que quando digitava dava erro quando colokei return neles pararam de dar erro ( erro de Server Unknown Command) se for isso obg!

__________________________________________


Assinatura feita por JORGE_HARD


http://img716.imageshack.us/img716/8462/rgsamp2.jpg (http://imageshack.us/photo/my-images/716/rgsamp2.jpg/)

Transferencia
07/05/2011, 02:05 AM
Tipo,o Return 1 significa : Retornar Verdade/Verdadeiro,dae o que fecha o if e o } de cima do return e oq fecha o comando e o } depois do return...

[R] ousenber [K]
07/05/2011, 02:13 AM
hum agora intendi melhor obg a Transferencia e a Josma_cmd , vcs sao os cara sauhasuhasusauh

__________________________________________


Assinatura feita por JORGE_HARD


http://img716.imageshack.us/img716/8462/rgsamp2.jpg (http://imageshack.us/photo/my-images/716/rgsamp2.jpg/)

The Knight
07/05/2011, 09:50 AM
dylan4021, o return nos comandos não serve só para fechar o comando, olhe um exemplo:
public OnPlayerCommandText( playerid, cmdtext[] )
{
if( !strcmp( cmdtext, "/k9", true ) )
{
if( IsPlayerAdmin( playerid ) )
{
SendClientMessage( playerid, /*Cor*/, "Você é administrador" );
SetPlayerHealth( playerid, 0.0 );
return true; //retorna só o IsPlayerAdmin (Se o jogador é administrador)
}
if( IsPlayerInAnyVehicle( playerid ) )
{
SendClientMessage( playerid, /*Cor*/, "Você está dentro de um veículo" );
SetPlayerHealth( playerid, 0.0 );
return true; //retorna só o IsPlayerInAnyVehicle (Se o jogador está num veículo)
}
return true; //este sim, retorna o comando
}
return SendClientMessage( playerid, 0xFFF000AA, "Comando inexistente!" ), false;
}

JOKERBOY
07/05/2011, 03:53 PM
Como adiciono uma sirene em determinada variavel de carros??

[R] ousenber [K]
07/05/2011, 05:31 PM
knight , isso eu sabia queria saber o ultimo return , pq n gosto de ficar com duvidas , isso atrapalha!

agora to com um erro que to tentando corcerta mais nao consigu de jeito nenhum! concerteza voces vao saber concertar!!!

e de checkpoint pra minha corrida! o code ta ai \/( peguei do tuto do andmeida10 acho q o nome e esse)
so que ai fiz tudo q pediu so q fica dando os erros abaixo! espero que alguem pode me ajudar pq foi o unico TUTO que achei q ta dando menos erros na hora de compilar!

TOPO DO GM

new Stats[MAX_PLAYERS];
new Float:Checkpoints[4][3]=
{
{2305.3593,-446.7570,131.0389},
{1981.7615,96.0542,137.6677},
{2404.5236,-283.4953,77.9999},
{2203.0410,-319.7430,131.6930}
};

CommandText

if(strcmp(cmdtext, "/partida", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SetPlayerRaceCheckpoint(i, 0, Checkpoints[1][1], Checkpoints[1][2], Checkpoints[1][3], Checkpoints[2][1], Checkpoints[2][2], Checkpoints[2][3], 10);
Stats[i] = 1;
return 1;
}
}
}
else
{
SendClientMessage(playerid, Vermelho, "Apenas Para Admins");
}
}

OnPlayerEnterCheckpoint

{
switch(Stats[playerid])
{
case 1:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[2][1], Checkpoints[2][2], Checkpoints[2][3], Checkpoints[3][1], Checkpoints[3][2], Checkpoints[3][3], 10);
Stats[i] = 1;
return 1;
}
case 2:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[3][1], Checkpoints[3][2], Checkpoints[3][3], Checkpoints[4][1], Checkpoints[4][2], Checkpoints[4][3], 10);
Stats[i] = 2;
return 1;
}
case 3:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 1, Checkpoints[4][1], Checkpoints[4][2], Checkpoints[4][3], Checkpoints[4][1], Checkpoints[4][2], Checkpoints[4][3]-5, 10);
Stats[i] = 3;
return 1;
}
case 4:
{
DisablePlayerRaceCheckpoint(playerid);
GameTextForPlayer(playerid, "Voce ganhou a Race Mixed Parabens!!!", 3000, 1);
GivePlayerMoney(playerid, 10000);
return 1;
}
}
}

Os erros sao estes:

C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(118) : warning 217: loose indentation
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(126) : error 032: array index out of bounds (variable "Checkpoints")
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(137) : warning 217: loose indentation
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(148) : error 032: array index out of bounds (variable "Checkpoints")
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(149) : error 017: undefined symbol "i"
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(155) : error 032: array index out of bounds (variable "Checkpoints")
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(156) : error 017: undefined symbol "i"
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(162) : error 032: array index out of bounds (variable "Checkpoints")
C:\Users\Washington\Desktop\Zumbie\filterscripts\m ixed.pwn(163) : error 017: undefined symbol "i"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


7 Errors.


__________________________________________


Assinatura feita por JORGE_HARD


http://img716.imageshack.us/img716/8462/rgsamp2.jpg (http://imageshack.us/photo/my-images/716/rgsamp2.jpg/)

Shadoww5
07/05/2011, 05:39 PM
Quais são os erros ?

[R] ousenber [K]
08/05/2011, 01:35 PM
erros ai encima shadow!

__________________________________________


Assinatura feita por JORGE_HARD


http://img716.imageshack.us/img716/8462/rgsamp2.jpg (http://imageshack.us/photo/my-images/716/rgsamp2.jpg/)

JonathanFeitosa
08/05/2011, 04:45 PM
if(strcmp(cmdtext, "/partida", true) == 0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho, "Apenas Para Admins");
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SetPlayerRaceCheckpoint(i, 0, Checkpoints[1][1], Checkpoints[1][2], Checkpoints[1][3], Checkpoints[2][1], Checkpoints[2][2], Checkpoints[2][3], 10);
Stats[i] = 1;
}
}
return true;
}

rjjj
08/05/2011, 04:47 PM
@dylan4021


Os errors foram causados por um mal uso das variáveis array, por exemplo, pra se referir ás quatro linhas da variável, deveria ser usado, respectivamente :mrgreen::




Checkpoints[0][0], Checkpoints[0][1], Checkpoints[0][2] e Checkpoints[0][3]


E não:



Checkpoints[1][0], Checkpoints[2][1], Checkpoints[3][2] e Checkpoints[4][3] ([4] = Total de cells, nesse caso)


Que é como estava no código, seguindo essa ordem, quando a quarta linha fosse ser usada, ela estava sendo representada por uma variável com o máximo de cells, o que causou error, pois os valores das variáveis arrays são guardados no AMX começando pela primeira cell da array, que é o [0], o que não impede que uma variável array como :p:



new Var[3];



Possa ser igualada 3 vezes:



Var[0] = 11 //Primeira vez
Var[1] = 22 //Segunda vez
Var[2] = 33 //Terceira vez



Por isso há necessidade de igualar o [0], se o que o cara quiser usar é o máximo que a variável array pode suportar (como foi o seu caso) :mrgreen:.


Whatever :mrgreen:, aqui está o seu código:



new Stats[MAX_PLAYERS];
new Float:Checkpoints[4][3]=
{
{2305.3593,-446.7570,131.0389},
{1981.7615,96.0542,137.6677},
{2404.5236,-283.4953,77.9999},
{2203.0410,-319.7430,131.6930}
};


public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/partida", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SetPlayerRaceCheckpoint(i, 0, Checkpoints[0][0], Checkpoints[0][1], Checkpoints[0][2], Checkpoints[1][0], Checkpoints[1][1], Checkpoints[1][2], 10);
Stats[i] = 1;
}
}
}
else
{
SendClientMessage(playerid, Vermelho, "Apenas Para Admins");
}
return 1;
}
return 0;
}




public OnPlayerEnterCheckpoint(playerid)
{
switch(Stats[playerid])
{
case 1:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[1][0], Checkpoints[1][1], Checkpoints[1][2], Checkpoints[2][0], Checkpoints[2][1], Checkpoints[2][2], 10);
Stats[playerid] = 1;
return 1;
}
case 2:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[2][0], Checkpoints[2][1], Checkpoints[2][2], Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2], 10);
Stats[playerid] = 2;
return 1;
}
case 3:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 1, Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2], Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2]-5, 10);
Stats[playerid] = 3;
return 1;
}
case 4:
{
DisablePlayerRaceCheckpoint(playerid);
GameTextForPlayer(playerid, "Voce ganhou a Race Mixed Parabens!!!", 3000, 1);
GivePlayerMoney(playerid, 10000);
return 1;
}
}
return 1;
}



Espero ter ajudado :p.

[R] ousenber [K]
08/05/2011, 07:50 PM
cara mt obrigado agora paro de dar erros vou ver aq e vo editar o comando de partida pra ver se fico do jeito q eu queria! vlw!

mais uma duvida tenho q completar o resto ? q vc coloco ate [1][2] tenho q fazer isso ate quanto ou pode deixar so ate ai?!

@EDIT

testei seu comando do jeito q esta so q quando passo pelo checkpoint o checkpoint n sai ele continua n muda aff?!

ApolloRJ
08/05/2011, 10:19 PM
1) Pergunta

existe algum comando para congelar o player.. sobre o veiculo.. tipo eu sei... que o player e...

TogglePlayerControllable(playerid, false);

existe algo que quando o cara dei a tele... congela ele... e o veiculo junto??

2) Pergunta

contagens regressiva... como posso fazer um comando camera começando pegando o cara de cima pra baixo... direita esquerda.... traz e frente.... desde já agradeço.. ApolloRJ

Shadoww5
08/05/2011, 10:34 PM
Explique melhor, ApolloRJ.

The Knight
08/05/2011, 10:34 PM
if( IsPlayerInAnyVehicle( playerid ) )
{
TogglePlayerControllable( playerid, 0 );
}

Sobre a câmara, segue este exemplo: http://forum.sa-mp.com/showpost.php?p=1191863&postcount=443

ApolloRJ
08/05/2011, 11:58 PM
public Duel3(playerid) // A PUBLIC
{
TogglePlayerControllable(playerid, false);
if( IsPlayerInAnyVehicle( playerid ) ) { TogglePlayerControllable( playerid, false ); }
new string[50];
format(string, sizeof(string), "~r~3"); //MENSAGEN DE CARREGAMENTO
GameTextForPlayer(playerid, string, 600, 6);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
SetTimerEx("Duel4", 1000, 0,"e",playerid); // O Tempo
return true;
}
public Duel4(playerid) // A PUBLIC
{
TogglePlayerControllable(playerid, false);
if( IsPlayerInAnyVehicle( playerid ) ) { TogglePlayerControllable( playerid, false ); }
new string[50];
format(string, sizeof(string), "~r~2"); //MENSAGEN DE CARREGAMENTO
GameTextForPlayer(playerid, string, 600, 6);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
SetTimerEx("Duel5", 1000, 0,"e",playerid); // O Tempo
return true;
}
public Duel5(playerid)
{
TogglePlayerControllable(playerid, true);
if( IsPlayerInAnyVehicle( playerid ) ) { TogglePlayerControllable( playerid, true ); }
new string[50];
format(string, sizeof(string), "~r~Go Go Go ~w~!!!!!");
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
GameTextForPlayer(playerid, string, 3000, 1);
return true;
}

isso eu aprendi num tudo que vi aqui no forum.... queria fazer uma coisa com esse comando... tipo na public Duel3 queria por a camera do player de cima pra baixo... a outra...de traz para frente.. uma em cada public... so que n sei o comando...




if( IsPlayerInAnyVehicle( playerid ) ){ TogglePlayerControllable( playerid, 0 );}

só que..... eu faço o tele + alto que o chão... para dar tempo dos objtos carrega... e msm com esse comando .. quando teleporto o veiculo cae.. do tele.. vez de ficar parada no alto.. como e a tele...... não sei se me entendeu.. sera que alguém poderia ajudar??

[R] ousenber [K]
09/05/2011, 12:13 AM
jah q ajudaram ele agora me ajudem e simples isso aq pra vcs(talvez kk)

esse é o comando q criei quando se digita /colete , era pra detectar se o player ta com 40 de vida ou menos ai n mandava colete , mais se estiver com mais mandava, so q ta dando warning! comando embaixo!


if(strcmp(cmdtext,"/colete",true)==0)
{
if(GetPlayerHealth(playerid) < 40) return SendClientMessage(playerid, 0x33CCFFAA, "Sua vida está baixa , nao podera comprar Colete!");
if(GetPlayerMoney(playerid) < 200) return SendClientMessage(playerid, 0x33CCFFAA, "Voce não tem dinheiro suficiente(R$200)");
SetPlayerArmour(playerid, 100);
GivePlayerMoney(playerid, -200);
new colete[100];
strins(colete,"\n",strlen(colete));
strins(colete,"{7491F6}Comprou Colete com Sucesso!\n",strlen(colete));
strins(colete,"\n",strlen(colete));
ShowPlayerDialog(playerid,8439, DIALOG_STYLE_MSGBOX, "{F60000} ----------------- ColetE --------------- ",colete, "Fechar", "");
return 1;
}

agora o warning



C:\Users\Washington\Desktop\testes\gamemodes\MxP.p wn(445) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

Header size: 3916 bytes
Code size: 28744 bytes
Data size: 139332 bytes
Stack/heap size: 16384 bytes; estimated max. usage=40168 cells (160672 bytes)
Total requirements: 188376 bytes

1 Warning.

The Knight
09/05/2011, 12:32 AM
Poste a linha do erro.

[R] ousenber [K]
09/05/2011, 12:45 AM
alinha é aquela ali o q ta no comando

LINHA AKI!

if(GetPlayerHealth(playerid) < 40) return SendClientMessage(playerid, 0x33CCFFAA, "Sua vida está baixa , nao podera comprar Colete!");

The Knight
09/05/2011, 12:53 AM
if( !strcmp(cmdtext, "/colete", true ) )
{
new Float: kHealth;
new kDinheiro;
GetPlayerHealth( playerid, kHealth );
kDinheiro = GetPlayerMoney( playerid );
if( !kHealth < 40.0 ) return SendClientMessage( playerid, 0x33CCFFAA, "A sua vida está demasiado baixa, não pode comprar colete!" );
else if( !kDinheiro < 200 ) return SendClientMessage( playerid, 0x33CCFFAA, "O seu dinheiro é insuficiente (R$200)" );
SetPlayerArmour( playerid, 100 );
GivePlayerMoney( playerid, -200 ) ;
new colete[ 100 ];
strins( colete, "\n", strlen( colete ) );
strins( colete, "{7491F6}Comprou Colete com Sucesso!\n", strlen( colete ) );
strins( colete, "\n", strlen( colete ) );
ShowPlayerDialog(playerid,8439, DIALOG_STYLE_MSGBOX, "{F60000} ----------------- ColetE --------------- ",colete, "Fechar" );
return true;
}

[R] ousenber [K]
09/05/2011, 04:29 PM
3 warning!

C:\Users\Washington\Desktop\testes\gamemodes\MxP.p wn(461) : warning 213: tag mismatch
C:\Users\Washington\Desktop\testes\gamemodes\MxP.p wn(462) : warning 213: tag mismatch
C:\Users\Washington\Desktop\testes\gamemodes\MxP.p wn(469) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

Header size: 4064 bytes
Code size: 30360 bytes
Data size: 142032 bytes
Stack/heap size: 16384 bytes; estimated max. usage=40168 cells (160672 bytes)
Total requirements: 192840 bytes

3 Warnings.


Linhas


LINHA 461
if( !kHealth < 40.0 ) return SendClientMessage( playerid, 0x33CCFFAA, "A sua vida está demasiado baixa, não pode comprar colete!" );

LINHA 462
else if( !kDinheiro < 200 ) return SendClientMessage( playerid, 0x33CCFFAA, "O seu dinheiro é insuficiente (R$200)" );

LINHA469
ShowPlayerDialog(playerid,8439, DIALOG_STYLE_MSGBOX, "{F60000} ----------------- ColetE --------------- ",colete, "Fechar" );

Josma_cmd
09/05/2011, 04:32 PM
if(kHealth > 40.0 ) return SendClientMessage(playerid, 0x33CCFFAA, "A sua vida está demasiado baixa, não pode comprar colete!" );

else if(kDinheiro > 200 ) return SendClientMessage(playerid, 0x33CCFFAA, "O seu dinheiro é insuficiente (R$200)" );

ShowPlayerDialog(playerid,8439, DIALOG_STYLE_MSGBOX, "NomedoDialog", "{F60000} ----------------- ColetE --------------- ", "colete", "Fechar");
//ou
ShowPlayerDialog(playerid,8439, DIALOG_STYLE_MSGBOX, "NomedoDialog", "{F60000} ----------------- ColetE --------------- ", "Fechar");

[R] ousenber [K]
09/05/2011, 06:04 PM
deu certo vlwww!!!

[R] ousenber [K]
10/05/2011, 04:13 PM
Outra duvida hsauhahsuusa

essa agora é como fazo a mensagem que vc nao tem dinheiro aparecer so se vc for da ORG?

ex: so dos policiais ai digito o comamando da mafia q da arma , fala q n so da ORG e fala q n tenho dinheiro.

queria q so aparece o de nao tem dinheiro se o cara fosse da mafia , se n aparecese so a msg q n e da ORG!

Code
if( !strcmp(cmdtext, "/kmafia", true ) )
{
if(Org[playerid] != Mafioso)
{
SendClientMessage(playerid, 0x9900FFAA, "Nao pode comprar armas de outra ORG!(Use /kpolicial)!");
}
ResetPlayerWeapons(playerid);
if(GetPlayerMoney(playerid) < 3000) return SendClientMessage(playerid, 0x33CCFFAA, "Você não tem dinheiro suficiente! (R$3000)");
GivePlayerMoney(playerid, -3000);
GivePlayerWeapon(playerid, 4, 99999);
GivePlayerWeapon(playerid, 24,99999);
GivePlayerWeapon(playerid, 26,99999);
GivePlayerWeapon(playerid, 30,99999);
GivePlayerWeapon(playerid, 28,99999);
new kmafia[100];
strins(kmafia, "\n", strlen(kmafia) );
strins(kmafia, "{7491F6}Comprou Kit da Mafia com Sucesso!\n", strlen(kmafia));
strins(kmafia, "\n", strlen(kmafia) );
ShowPlayerDialog(playerid,8439, DIALOG_STYLE_MSGBOX, "kmafia", "{F60000} ----------------- Kit da Mafia --------------- ", "kmafia", "Fechar");
return true;
}

The Knight
10/05/2011, 04:20 PM
if( !strcmp(cmdtext, "/kmafia", true ) )
{
if( Org[ playerid ] == Mafioso )
{
ResetPlayerWeapons( playerid );
if( GetPlayerMoney( playerid ) < 3000 ) return SendClientMessage( playerid, 0x33CCFFAA, "Você não tem dinheiro suficiente! (R$3000)" );
GivePlayerMoney( playerid, -3000 );
GivePlayerWeapon( playerid, 4, 99999 );
GivePlayerWeapon( playerid, 24,99999 );
GivePlayerWeapon( playerid, 26,99999 );
GivePlayerWeapon( playerid, 30,99999 );
GivePlayerWeapon( playerid, 28,99999 );
new kmafia[ 100 ];
strins( kmafia, "\n", strlen(kmafia) );
strins( kmafia, "{7491F6}Comprou Kit da Mafia com Sucesso!\n", strlen( kmafia ) );
strins( kmafia, "\n", strlen( kmafia) );
ShowPlayerDialog(playerid, 8439, DIALOG_STYLE_MSGBOX, "kmafia", "{F60000} ----------------- Kit da Mafia --------------- ", "kmafia", "Fechar" );
return true;
}
else return SendClientMessage( playerid, 0x33CCFFAA, "Você não pertence à mafia, use /kitpolicial" ), true;
}

[R] ousenber [K]
10/05/2011, 04:24 PM
cara vlw agora deu certo :D

The Knight
10/05/2011, 04:39 PM
Reveja o meu código, não está muito diferente do seu mas viu? Por uma função diferenciada muita coisa é mudada.

[R] ousenber [K]
10/05/2011, 04:55 PM
sim , mais pq vc mudo o code abaixo de != pra ==? o != e direfente e == e igual certo? ou errado? '-'
if( Org[ playerid ] == Mafioso )

The Knight
10/05/2011, 06:13 PM
== irá significar que só o nome/número da variável que vem asseguir irá funcionar.

Shadoww5
10/05/2011, 06:14 PM
Sim, está certo.

Mas isto (abaixo) significa que se a organização a qual o player pertence não for a MAFIA a função será executada, ou seja, ele poderá comprar um kit.

if(Org[playerid] != Mafioso)

Enquanto esta outra (abaixo) diz que a função SOMENTE será executada se o player for um membro da MAFIA:

if(Org[playerid] == Mafioso)

[R] ousenber [K]
10/05/2011, 06:48 PM
vlw gente entendi :D

[R] ousenber [K]
11/05/2011, 04:28 PM
ae gente, aqui deu um bug, coloquei isso(abaixo) em onplayertext , q e aquela animaçao de fala dos gangster do gta, so q o player n fala nada , so aparece a animaçao , como q faz pra aparecer a animaçao mais e fala??

public OnPlayerText(playerid, text[])
{
ApplyAnimation(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
return 0;
}

Shadoww5
11/05/2011, 04:58 PM
Caso você queira que mostre um texto acima da cabeça do jogador adicione isto ao teu codigo:

SetPlayerChatBubble(playerid, text, 0xFFFFFFAA, 100.0, 10000);

Mas se você quiser que seja mostrado o que o player falou no chat coloque o primeiro codigo abaixo no "OnPlayerText" e o segundo codigo deverá ficar no final do seu GameMode:

new nome[MAX_PLAYER_NAME];
new str[128];
GetPlayerName(playerid, nome, sizeof(nome));
format(str, sizeof(str),"%s diz: %s", nome, text);
ProxDetector(20.0, playerid, str,0xFFFFFFAA,0xFFFFFFAA,0xFFFFFFAA,0xFFFFFFAA,0x FFFFFFAA);

//---------------------------------PUBLIC----------------------------------------

public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
else
{
SendClientMessage(i, col1, string);
}
}
}
return 1;
}

Logo, caso queira adicionar todas estas funções ao seu GameMode, ele ficará assim:

public OnPlayerText(playerid, text[])
{
ApplyAnimation(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
new nome[MAX_PLAYER_NAME];
new str[128];
GetPlayerName(playerid, nome, sizeof(nome));
format(str, sizeof(str),"%s diz: %s", nome, text);
ProxDetector(20.0, playerid, str,0xFFFFFFAA,0xFFFFFFAA,0xFFFFFFAA,0xFFFFFFAA,0x FFFFFFAA);
SetPlayerChatBubble(playerid, text, 0xFFFFFFAA, 100.0, 10000);
return 1;
}

public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
else
{
SendClientMessage(i, col1, string);
}
}
}
return 1;
}

[R] ousenber [K]
11/05/2011, 05:02 PM
mais isso vai mandar pra todos do jogo? ou so quem estiver perto?? pq quero um que mande para todos :D

@edit

2 warnings

C:\Users\Washington\Desktop\MxP\gamemodes\MxP.pwn( 611) : warning 219: local variable "nome" shadows a variable at a preceding level
C:\Users\Washington\Desktop\MxP\gamemodes\MxP.pwn( 1358) : warning 235: public function lacks forward declaration (symbol "ProxDetector")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

2 Warnings.

linhas


Linha 1358

public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)

Linha 611

new nome[MAX_PLAYER_NAME];

Josma_cmd
11/05/2011, 06:15 PM
new nome[MAX_PLAYER_NAME]; //Já foi criado, apague-a
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5); //Inicio do GM

Shadoww5
11/05/2011, 06:38 PM
Desculpa por ter escondido a forward =X

Mas agora o codigo está do jeito que você deseja pois, desta forma, enviará a todos os jogadores. Apague tudo daquele codigo que eu tinha mandado e use este abaixo:

public OnPlayerText(playerid, text[])
{
ApplyAnimation(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
new str[128];
GetPlayerName(playerid, nome, sizeof(nome));
format(str, sizeof(str),"%s diz: %s", nome, text);
SendClientMessageToAll(0xFFFFFFAA,str);
SetPlayerChatBubble(playerid, text, 0xFFFFFFAA, 100.0, 10000);//CASO NAO QUEIRA QUE APARECA AQUELA MENSAGEM NA CABECA DO JOGAR APAGUE ESTA LINHA
return 1;
}

Shadoww5
11/05/2011, 06:56 PM
Alguem sabe qual o ID deste objeto ?

(NO ANEXO)

#EDIT

Pode deixar ... Ja encontrei.

So para constar: ID 18750.

[R] ousenber [K]
14/05/2011, 03:01 AM
Se alguem pudesse me ajudar a criar um code de quando matar alguem q e procurado ganhasse dinheiro eu iria amar pq o unico code que nao sei se vai precisar e esse abaixo, Se alguem puder me ajudar agradeço

SetPlayerWantedLevel(playerid,GetPlayerWantedLevel (playerid) +1);

Shadoww5
14/05/2011, 10:50 AM
new Recompensa[MAX_PLAYERS];
new Text3D:Rec[MAX_PLAYERS];

public OnPlayerDeath(playerid,killerid,reason)
{
Recompensa[killerid]++;
SetPlayerWantedLevel(killerid,GetPlayerWantedLevel (killerid) +1); //ESSE AQUI VAI MUDAR O NIVEL DE PROCURADO
new grana = Recompensa[playerid]*1000;
if(Recompensa[playerid] > 0)
{
GivePlayerMoney(killerid,grana); //SE JOGADOR JA TIVER MATADO 3 PESSOAS E FOR MORTO, O ATUAL ASSASSINO GANHARÁ 3000
Recompensa[playerid] = 0;
return 1;
}
return 1;
}

//CASO VOCÊ QUEIRA QUE MOSTRE UM TEXT3D SOBRE A CABEÇA DO MATADOR USE ESTE CODIGO

//NÃO TESTADO !! NÃO TESTADO !!

public OnPlayerUpdate(playerid)
{
if(Recompensa[playerid] > 0)
{
new s[128];
format(s,sizeof(s),"Recompensa: R$ %d",Recompensa[playerid])
Rec[playerid] = Create3DTextLabel(s,0xFFFF00AA,10.0,40.0,10.0,20.0 ,0);
Attach3DTextLabelToPlayer(Rec[playerid], playerid, 0.0, 0.0, 0.4);
return 1;
}
return 1;
}

[R] ousenber [K]
14/05/2011, 01:17 PM
cara deu esse erro aqui olha

C:\Users\Washington\Desktop\testes\gamemodes\new.p wn(598) : error 001: expected token: ";", but found "-identifier-"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

LINHA:

Rec[playerid] = Create3DTextLabel(s,0xFFFF00AA,10.0,40.0,10.0,20.0 ,0);

Shadoww5
14/05/2011, 01:32 PM
public OnPlayerUpdate(playerid)
{
if(Recompensa[playerid] > 0)
{
new s[128];
format(s,sizeof(s),"Recompensa: R$ %d",Recompensa[playerid]);
Rec[playerid] = Create3DTextLabel(s,0xFFFF00AA,10.0,40.0,10.0,20.0 ,0);
Attach3DTextLabelToPlayer(Rec[playerid], playerid, 0.0, 0.0, 0.4);
return 1;
}
return 1;
}

Pronto, corrigido.

Shadoww5
14/05/2011, 03:14 PM
Pessoal, qual é mais rapido ? ZCMD ou DCMD ?

E, além desses, qual seria o mais rapido atualmente ?

[S]trong
14/05/2011, 03:45 PM
zcmd é muito mais rápido que dcmd o mais rápido atualmente é o zcmd e o ycmd que tem a mesma velocidade.

Nake01
15/05/2011, 01:24 PM
Queria saber como faço paara criar um TextDraw igual a esse da imagem abaixo

Escrito assim por ex: Retrox Brasil - [RTX] [ OFICIAL ] - GameMode - [RTX]2.0c

http://lh5.ggpht.com/_ClCEJHg0YjY/Tc_T49LuznI/AAAAAAAAAIE/K1In_18AJ1g/s400/sa-mp-013.png

[S]trong
15/05/2011, 01:30 PM
use o zamaroth textdraw editor (isso é uma textdraw em formato box).

Nake01
15/05/2011, 01:40 PM
Aonde encontro?

[S]trong
15/05/2011, 01:58 PM
http://forum.sa-mp.com/showthread.php?t=117851&highlight=zamaroth

Nake01
18/05/2011, 05:29 PM
Como faço para botar a Loop

levelbope

e a Enum

PlayerInfo[playerid][pBOPE]

para carregar no sistema do Falcon (http://forum.sa-mp.com/showthread.php?t=192519)

faeldk
18/05/2011, 07:56 PM
Uma duvida:
Certo dia eu vi em um tópico, que o cara usou essa return:
return 0x1;
Então eu queria saber oque ele significa:(true) ou (false)?
Essa return e melhor(mais rapida) do que a convecional?
Vlw ae!

deregudegu
18/05/2011, 09:19 PM
@Nake01
Se o seu GM for o GF procuro por:

enun pInfo
//dentro dela coloque a linha
pBOPE,
//se for a ultima linha antes de feixar o enum coloque sem virgula.

@faeldk
Eu acho que isso equivale ao return 0, ja que 0 vezes 1 é 0 :D

faeldk
19/05/2011, 12:46 AM
@faeldk
Eu acho que isso equivale ao return 0, ja que 0 vezes 1 é 0 :D
mais no Pawn o sinal de Multiplicação e representado pelo ' * ' não?
---------------
@EDIT:
Acabei de fazer o testé ele retornou '1'!
Tambem fiz um teste de velocidade com as seguintes Arrays:
new Array = 0x1;

new Array = 1;

new Array = true;

O 'new Array = 0x1;' foi 2 Milessegundos mais rapido do que o 'new Array = 1;', é obteve a mesma velocidade que o 'new Array = true;'. ;)

Transferencia
19/05/2011, 01:10 AM
Sim FaeldDk,no caso da array

new Array = 0x1;

Executara como 0 * 1 = 0

Nobiin
19/05/2011, 04:06 PM
Aqui os kills/deaths tão aparecendo duplicados...

public OnPlayerDeath(playerid, killerid, reason)
{
new playercash;
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason );
ResetPlayerMoney(playerid);
} else {
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid,GetPlayerScore(killerid)+1 );
playercash = GetPlayerMoney(playerid);
if (playercash > 0) {
GivePlayerMoney(killerid, playercash);
ResetPlayerMoney(playerid);
}
else
{
}
}
return 1;
}

deregudegu
19/05/2011, 04:25 PM
Tenta assim:

public OnPlayerDeath(playerid, killerid, reason)
{
new playercash;
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid,GetPlayerScore(killerid)+1 );
playercash = GetPlayerMoney(playerid);
if (playercash > 0)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(killerid, playercash);
}
return 1;
}

Nake01
19/05/2011, 04:48 PM
Como assim poderia fazer o Ex: do Code?

Nobiin
19/05/2011, 05:07 PM
Funfo não, continua mesma coisa...

deregudegu
19/05/2011, 05:10 PM
Nobiin
Procura outros SendDeathMessage(killerid,playerid,reason);
porque é ele que faz aparecer isso :D

Nobiin
19/05/2011, 05:18 PM
Não tinha outros mas retirei o SendDeathMessage(killerid,playerid,reason); do GM e voltou a aparecer 1 vez denovo. \o/

Abraço e vlw pela ajuda!

deregudegu
19/05/2011, 05:46 PM
De nada se precisar avisa aki no forum :D

CyNiC
20/05/2011, 01:40 AM
Então é lógico que tem outro em algum filterscript ou include.

faeldk
20/05/2011, 01:35 PM
Outras 2 duvidas:
Tem como eu Conectar meu server a um Forúm ou site?
Ex.:
"Fulano de tal foi Banido do servidor.
Ai automáticamente o Forúm cria um Post avisando o Ban"
2°Duvida:
Oque é While? Como eu uso essa função? É como eu posso aplica-la no meu dia-a-dia para indentar meu codigo?

Vlw ae! :D

steki.
20/05/2011, 02:58 PM
Outras 2 duvidas:
Tem como eu Conectar meu server a um Forúm ou site?
Ex.:

2°Duvida:
Oque é While? Como eu uso essa função? É como eu posso aplica-la no meu dia-a-dia para indentar meu codigo?

Vlw ae! :D

1º- Difícil, mas tem sim como. Use o plugin de socket para conectar o servidor de samp à outro que interprete um browser ou edite a database para criar o post.

2º- while é um loop, uma versão melhor do que o for (a tradução significa "enquanto").

new var;
while( var < 100 ) // Enquanto a var for menor que 100 ->
{
// Executar
var++; // para encrementar o valor e, quando executar 100 vezes, continua o código
}


ou um loop infinito

while( true )
{

}

faeldk
20/05/2011, 03:26 PM
1º- Difícil, mas tem sim como. Use o plugin de socket para conectar o servidor de samp à outro que interprete um browser ou edite a database para criar o post.

2º- while é um loop, uma versão melhor do que o for (a tradução significa "enquanto").

new var;
while( var < 100 ) // Enquanto a var for menor que 100 ->
{
// Executar
var++; // para encrementar o valor e, quando executar 100 vezes, continua o código
}


ou um loop infinito

while( true )
{

}

Humm entendi.
mas é se eu achar o resultado e querer retornar alguma coisa?
Ex.:
new var;
while( var < 100 ) // Enquanto a var for menor que 100 ->
{
// Executar
if(var == 100 ? (Kick(playerid)) : (false))
var++; // para encrementar o valor e, quando executar 100 vezes, continua o código
}

é assim que eu faço?
-----------------
So não entendi o Loop Infinito, pode explicar mais detalhadamente esa parte? ;p

[R] ousenber [K]
23/05/2011, 06:38 PM
Ae gente uma ajudinha rapida

Nunca mexi com SetTimer ou Publics que nao seja do GM, Ai queria uma ajuda pra ver se ta certo e tambem tirar esse Warning e dar certo o CMD , nao sei se ta certo , se tiver tudo errado , ai e FODZ aririari , mais se alguem puder ajudar agradeço!

Warning:
C:\Users\Washington\Desktop\testes\gamemodes\teste .pwn(542) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.


Codigos:
forward PayDay(playerid);

SetTimer("PayDay", 600000, true);

public PayDay(playerid)
{
SendClientMessage(playerid, BRANCO,"__________..::[PAYDAY]::..__________");
SendClientMessage(playerid, BRANCO,"Você Recebeu {00FF00AA}R$:5000");
SendClientMessage(playerid, BRANCO,"Você Recebeu {00FF00AA}$:50000");
GivePlayerReal(playerid,5000);
GivePlayerMoney(playerid,50000);
return 0;
}

Esqueci de Posta comando que ta dando Warning :s

if(!strcmp("/payday", cmdtext, true))
{
PayDay();
return 1;
}

The Knight
23/05/2011, 06:42 PM
forward PayDay( playerid );

//OnGameModeInit
SetTimer( "PayDay", 600000, true );

public PayDay( playerid )
{
SendClientMessage( playerid, BRANCO, "__________..::[PAYDAY]::..__________" );
SendClientMessage( playerid, BRANCO, "Você recebeu {00FF00AA}R$:5000" );
SendClientMessage( playerid, BRANCO, "Você Recebeu {00FF00AA}$:50000" );
GivePlayerReal( playerid, 5000 );
GivePlayerMoney( playerid, 50000 );
return true;
}

Porque razão estava "return 0" ?

steki.
23/05/2011, 07:56 PM
Pfft.

SetTimerEx( "PayDay", 600000, true, "d" , playerid );

oou.

public PayDay( )
{
for( new playerid; playerid < MAX_PLAYERS; playerid++ )
{
SendClientMessage( playerid, BRANCO, "__________..::[PAYDAY]::..__________" );
SendClientMessage( playerid, BRANCO, "Você recebeu {00FF00AA}R$:5000" );
SendClientMessage( playerid, BRANCO, "Você Recebeu {00FF00AA}$:50000" );
GivePlayerReal( playerid, 5000 );
GivePlayerMoney( playerid, 50000 );
}
return true;
}
(Melhor)

[R] ousenber [K]
23/05/2011, 08:02 PM
Mais agora deu esse warning, e o outro ainda persisti!


C:\Users\Washington\Desktop\testes\gamemodes\teste .pwn(1125) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warnings.




public PayDay( )
{
for( new playerid; playerid < MAX_PLAYERS; playerid++ )
{
SendClientMessage( playerid, BRANCO, "__________..::[PAYDAY]::..__________" );
SendClientMessage( playerid, BRANCO, "Você recebeu {00FF00AA}R$:5000" );
SendClientMessage( playerid, BRANCO, "Você Recebeu {00FF00AA}$:50000" );
GivePlayerReal( playerid, 5000 );
GivePlayerMoney( playerid, 50000 );
}
return 1;//Linha 1125
}

steki.
23/05/2011, 08:20 PM
public PayDay( )
{
for( new playerid; playerid < MAX_PLAYERS; playerid++ )
{
SendClientMessage( playerid, BRANCO, "__________..::[PAYDAY]::..__________" );
SendClientMessage( playerid, BRANCO, "Você recebeu {00FF00AA}R$:5000" );
SendClientMessage( playerid, BRANCO, "Você Recebeu {00FF00AA}$:50000" );
GivePlayerReal( playerid, 5000 );
GivePlayerMoney( playerid, 50000 );
}
return 1;//Linha 1125
}

[R] ousenber [K]
23/05/2011, 09:09 PM
ainda continua Luis , o warning, so que se eu tirar o return 1; da certo u.U

Carl_Thuse
23/05/2011, 10:05 PM
Acho que não é necessario o SetTimerEX,
Penso que apenas o loop no começo do public Payday()
Para definir os players já é suficiente :U

[R] ousenber [K]
23/05/2011, 10:42 PM
Ok , consegui fazer da PD de boa!
Obg Luis , e os outros que me ajudaram

steki.
24/05/2011, 02:08 PM
Acho que não é necessario o SetTimerEX,
Penso que apenas o loop no começo do public Payday()
Para definir os players já é suficiente :U

Porisso eu disse 'oou'.

Mas como o loop começa no Init, ela não dá nenhuma variavel, como o playerid porisso que o loop na função é mais aconselhado.

Shadoww5
31/05/2011, 12:41 AM
Qual a diferença entre "<" e "<<" ?

E o que significa o "?" no pawno ?

TiagoPS
31/05/2011, 03:39 PM
Qual a diferença entre "<" e "<<" ?

E o que significa o "?" no pawno ?

É algo como " DESLOCAMENTO "

Tipo

>> DESLOCAMENTO DE BITS P/ ESQUERDA (multiplica por 2)
<< DESLOCAMENTO DE BITS P/ DIREITA (divide por 2)

EX:

x<<1 0000 1110 (x=14)
x<<3 0111 0000 (x=112)
x>>1 0011 1000 (x=56)


FONTES:


http://pt.scribd.com/doc/50716484/11/Operadores-bit-a-bit

Shadoww5
31/05/2011, 04:16 PM
E o "?" ?

steki.
31/05/2011, 05:58 PM
É um operador condicional, o 'if' pras pessoas inteligentes.

E o << e>> não é multplicação. É um operador de deslocameto.
Por exemplo no C++.

Temos o 'cout', o print do C++. Pra printar é assm:


cout << "Texto";


Ele desloca ou 'move' a variável pra direção do operador.

Isso em bits porisso que com algumas vars dá a sensação de estar multiplicando.

TheGarfield
31/05/2011, 06:00 PM
E o "?" ?

o >> & << não sei, mais o ? :




new a,b;

if(a > b)
{
a = 0;
}
else
{
b =0;
}



/\ isto tu sabes.


em operadores ternários:


new a,b;

a = ((a > b)?(a=0;):(b=0;))



mesmo código, só que em operadores ternários.

Shadoww5
31/05/2011, 06:16 PM
Hum, ok ok.

Deu para ter uma noçao.

Valeu ae.

[R] ousenber [K]
31/05/2011, 06:51 PM
alguem pode me ajudar com esse erro e warning...

nunca mexi com comando assim(igual ao que ele coloco) , to tentando fazer o sistema que ele fez o tuto , so q ta dando erro ..

erro:
C:\Users\Washington\Desktop\testes\gamemodes\bare. pwn(97) : error 001: expected token: ")", but found "return"
C:\Users\Washington\Desktop\testes\gamemodes\bare. pwn(103) : warning 215: expression has no effect
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

cmds:

enum gAdmin
{
Logado,
Nivel,
}
new AdminInfo[MAX_PLAYERS][gAdmin];
new GivePlayerid;

CMD:setlevel(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
if(AdminInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, VERMELHO_CLARO,"[ERRO]: Seu nível é insuficiente para setar como admin ou não está logado na rcon.");

static Level = 0;
if(sscanf(params, "ud", GivePlayerid, Level) return SendClientMessage(playerid, BRANCO,"[ERRO]: Correto: /Setlevel [ID] [Nivel(1-5)].");//linha 97

if(Level > 5 || Level < 0) return SendClientMessage(playerid, VERDE_CLARO,"[ERRO]:Bote Nivel Maior que 1 e menor que 5!.");

if(AdminInfo[GivePlayerid][Nivel] == Level) return SendClientMessage(playerid, LARANJA_CLARO,"[ERRO]: Este player já tem este nível.");

AdminInfo[GivePlayerid][Nivel] == Level;//linha 103
SendClientMessage(GivePlayerid, CINZA_CLARO, "[INFO]: Parabéns, você é um adminstrador");
return 1;
}

The Knight
31/05/2011, 06:59 PM
Esqueceu-se de um " ) ".
Na linha 103 só levaria == se fosse com if, como está sem if só leva um =:
CMD:setlevel(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
if(AdminInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, VERMELHO_CLARO,"[ERRO]: Seu nível é insuficiente para setar como admin ou não está logado na rcon.");

static Level = 0;
if(sscanf(params, "ud", GivePlayerid, Level)) return SendClientMessage(playerid, BRANCO,"[ERRO]: Correto: /Setlevel [ID] [Nivel(1-5)]."); // Corrigido

if(Level > 5 || Level < 0) return SendClientMessage(playerid, VERDE_CLARO,"[ERRO]:Bote Nivel Maior que 1 e menor que 5!.");

if(AdminInfo[GivePlayerid][Nivel] = Level) return SendClientMessage(playerid, LARANJA_CLARO,"[ERRO]: Este player já tem este nível.");

AdminInfo[GivePlayerid][Nivel] == Level;//linha 103
SendClientMessage(GivePlayerid, CINZA_CLARO, "[INFO]: Parabéns, você é um adminstrador");
return 1;
}

[R] ousenber [K]
31/05/2011, 07:18 PM
deixa jah fiz um nigoso aqui q deu certinho :D

The Knight
31/05/2011, 07:42 PM
O que postei ai já está corrigido.

[R] ousenber [K]
31/05/2011, 08:10 PM
sim so q tinha um nigoso aq fazendo falar q tava incorreto o comando mais jah concertei :s

Shadoww5
31/05/2011, 10:17 PM
Como faço para colocar que quando alguem digite /rcon daradmin, seja ativado o comando /daradmin ?

[R] ousenber [K]
01/06/2011, 05:20 PM
Outra duvida , é que tipo quero salvar o nivel de Admin, so q so conseguir fazer salvar não setar quando entra como fazo isso? pq eu fiz uma "coisa" e agora ta dando warning ...

Warning...
C:\Users\Washington\Desktop\testes\gamemodes\bare. pwn(185) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.


Codes..
public OnPlayerConnect(playerid)
{
GameTextForPlayer(playerid,"~w~SA-MP: ~r~Bare Script",5000,5);
new string[128];

GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(!fexist(arquivo))
{
format(string, sizeof string, "Você Não Possui Registro\n\nNome: %s\n\nInsira uma Senha para se Registrar", nome);
ShowPlayerDialog(playerid, Registro, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Registrar", "Sair");
}
if(fexist(arquivo))
{
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
}
return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(fexist(arquivo))
{
dini_IntSet(arquivo,"Nivel", DylanInfo[playerid][Nivel]);
}
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[128];

if(dialogid == Registro)
{
if(response)
{
GetPlayerName(playerid, nome, sizeof(nome));
if(strlen(inputtext) == 0)
{
format(string, sizeof string, "Você Não Possui Registro\n\nNome: %s\n\nInsira uma Senha para se Registrar", nome);
ShowPlayerDialog(playerid, Registro, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Registrar", "Sair");
return 0;
}
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(!fexist(arquivo))
{
dini_Create(arquivo);
dini_IntSet(arquivo,"Password", udb_hash(inputtext));
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
GetPlayerName(playerid, nome, sizeof(nome));
printf("[Registro] %s se Registrou-se", nome);
}
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Você saiu do Servidor sem Se Registrar !!");
SendClientMessage(playerid, 0x80FF00AA, "Volte Sempre...");
Kick(playerid);
}
}
if(dialogid == Login)
{
if(response)
{
if(strlen(inputtext) == 0)
{
GetPlayerName(playerid, nome, sizeof(nome));
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
return 0;
}
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(fexist(arquivo))
{
new password = dini_Int(arquivo, "Password");
if(udb_hash(inputtext) != password)
{
GetPlayerName(playerid, nome, sizeof(nome));
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
SendClientMessage(playerid, 0xFF0000FF, "[DylaN WaR]: Senha Incorreta. Tente Novamente");
return 1;
}
if(udb_hash(inputtext) == password)
{
SpawnPlayer(playerid);
dini_Int(arquivo,"Nivel",DylanInfo[playerid][Nivel]);// LINHA 185
GetPlayerName(playerid, nome, sizeof(nome));
printf("[Login] %s Logou no Servidor", nome);
return 1;
}
}
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Você saiu do Servidor sem Se Logar !!");
SendClientMessage(playerid, 0x80FF00AA, "Volte Sempre...");
Kick(playerid);
}
}
return 1;
}

The Knight
01/06/2011, 06:10 PM
@Shadoww5
public OnRconCommand( cmd[] )
{
if( !strcmp( cmd, "cRcon", true ) ) return OnPlayerCommandText( playerid, "/cComando" );
}


"cRcon" - O comando que irá ser digitado para dar origem ao comando que se encontra no OnPlayerCommandText, neste caso terá de digitar: /rcon cRcon

"cComando" - O comando que irá ser processado, deve estar na public OnPlayerCommandText.

Shadoww5
01/06/2011, 06:44 PM
Ok, The Knight ! =D

@dylan

Testa:
.
public OnPlayerConnect(playerid)
{
GameTextForPlayer(playerid,"~w~SA-MP: ~r~Bare Script",5000,5);
new string[128];

GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(!fexist(arquivo))
{
format(string, sizeof string, "Você Não Possui Registro\n\nNome: %s\n\nInsira uma Senha para se Registrar", nome);
ShowPlayerDialog(playerid, Registro, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Registrar", "Sair");
}
if(fexist(arquivo))
{
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
}
return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(fexist(arquivo))
{
dini_IntSet(arquivo,"Nivel", DylanInfo[playerid][Nivel]);
}
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[128];

if(dialogid == Registro)
{
if(response)
{
GetPlayerName(playerid, nome, sizeof(nome));
if(strlen(inputtext) == 0)
{
format(string, sizeof string, "Você Não Possui Registro\n\nNome: %s\n\nInsira uma Senha para se Registrar", nome);
ShowPlayerDialog(playerid, Registro, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Registrar", "Sair");
return 0;
}
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(!fexist(arquivo))
{
dini_Create(arquivo);
dini_IntSet(arquivo,"Password", udb_hash(inputtext));
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
GetPlayerName(playerid, nome, sizeof(nome));
printf("[Registro] %s se Registrou-se", nome);
}
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Você saiu do Servidor sem Se Registrar !!");
SendClientMessage(playerid, 0x80FF00AA, "Volte Sempre...");
Kick(playerid);
}
}
if(dialogid == Login)
{
if(response)
{
if(strlen(inputtext) == 0)
{
GetPlayerName(playerid, nome, sizeof(nome));
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
return 0;
}
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo,sizeof(arquivo),"/DylanContas/%s.ini",nome);
if(fexist(arquivo))
{
new password = dini_Int(arquivo, "Password");
if(udb_hash(inputtext) != password)
{
GetPlayerName(playerid, nome, sizeof(nome));
format(string, sizeof string, "Você já Possui Registro\n\nNome: %s\n\nInsira sua senha para que possa logar:", nome);
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "[DylaN WaR]", string, "Logar", "Sair");
SendClientMessage(playerid, 0xFF0000FF, "[DylaN WaR]: Senha Incorreta. Tente Novamente");
return 1;
}
if(udb_hash(inputtext) == password)
{
SpawnPlayer(playerid);
DylanInfo[playerid][Nivel]) = dini_Int(arquivo,"Nivel");
GetPlayerName(playerid, nome, sizeof(nome));
printf("[Login] %s Logou no Servidor", nome);
return 1;
}
}
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Você saiu do Servidor sem Se Logar !!");
SendClientMessage(playerid, 0x80FF00AA, "Volte Sempre...");
Kick(playerid);
}
}
return 1;
}

[R] ousenber [K]
01/06/2011, 06:54 PM
agora deu shadow Vlw :d

Shadoww5
01/06/2011, 07:45 PM
De nada ... =D

Shadoww5
05/06/2011, 05:46 PM
Pessoal, me tira uma duvida:

Eu estava aqui analisando o GM do BSL e vi que o numero do telefone é definido por um random. Desta forma:

new randphone = 1000 + random(8999);
PlayerInfo[playerid][pPnumber] = randphone;

Entretanto, o random ele é aleatorio (obviamente) e não encontrei nada no GM que faça com que, caso o numero do telefone já exista, seja trocado.

Então, alguem sabe como que isto funciona ?

Penso que é porque o random roda 8999 numeros o que diminue a chance de numeros iguais, mas não tenho certeza.

Ricop522
05/06/2011, 06:20 PM
Não existe uma função que cheque se os números já estão sendo usados. Porém a chance disso acontecer é bem minima.

Falcon.
05/06/2011, 06:32 PM
Não é porque ele vai fazer o random em números altos que não quer dizer que nunca vai dar algum número que já exista, eu por exemplo já tive a sorte de ter 4 vezes seguidas o mesmo número em um random de 600.
Então oque você pode está fazendo é o seguinte:

Assim que ele definir o número de telefone para o player, você pode está salvando ele como um arquivo.
Então na próxima vez que ele for executar o random ele vai verificar se existe o número(arquivo) caso exista ele fará o random novamente.
Segue o código abaixo utilizando dini como exemplo:


public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/comprarcelular", true))
{
DefinirNumeroCelularPlayer(playerid);
return 0x1;
}
return 0;
}

stock DefinirNumeroCelularPlayer(playerid)
{
new arquivo[67];
new randphone = 1000 + random(8999);
format(arquivo, sizeof(arquivo), "/Celulares/%d.ini", randphone);
if(fexist(arquivo)) return DefinirNumeroCelularPlayer(playerid);
PlayerInfo[playerid][pPnumber] = randphone;
return 0x1;
}

Atenciosamente,
Falcon.

Shadoww5
05/06/2011, 07:12 PM
Este aqui é o codigo da dialog pra comprar o telefone:


if(listitem == 0)
{
if(PlayerInfo[playerid][pTraderPerk] > 0)
{
new skill = 500 / 100;
new price = (skill)*(PlayerInfo[playerid][pTraderPerk]);
new payout = 500 - price;
format(string, sizeof(string), "~r~R$ %d", payout);
GameTextForPlayer(playerid, string, 5000, 1);
GivePlayerGP(playerid,- payout);
SBizzInfo[9][sbTill] += payout;
ExtortionSBiz(9, payout);
}
else
{
format(string, sizeof(string), "~r~R$ %d", 500);
GameTextForPlayer(playerid, string, 5000, 1);
GivePlayerGP(playerid,-500);
SBizzInfo[9][sbTill] += 500;
ExtortionSBiz(9, 500);
}
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
new randphone = 1000 + random(8999);//minimum 1000 max 9999
PlayerInfo[playerid][pPnumber] = randphone;
PlayerInfo[playerid][pPhone] = 1;
format(string, sizeof(string), " Você comprou um celular com número: %d", randphone);
SendClientMessage(playerid, COLOR_GRAD4, string);
SendClientMessage(playerid, COLOR_GRAD5, "Você pode checar o número qualquer hora no /rg");
SendClientMessage(playerid, COLOR_WHITE, "DICA: Você pode digitar /ajuda para saber comandos do celular");
TogglePlayerControllable(playerid, 1);
}

Eu procurei todas referencias à pPnumber e em nenhuma delas foi encontrada verificação de existencia de algum numero igual ao do random.

Falcon.
05/06/2011, 07:14 PM
Tentou oque eu disse ??

Shadoww5
05/06/2011, 07:20 PM
Eu não quero criar um codigo, eu só quero saber como que este funciona.

#DUVIDA

Criei um comando para guardar alguma arma no porta-malas ou porta-luvas, mas estou encontrando um erro na linha que cria e define o "mun":

OBS: O "c" do "[c]" é de um loop que tem algumas linhas acima.

if(Arma2[c][2] == 0)
{
Arma2[c][0] = GetPlayerWeapon(playerid);
new mun = GetPlayerAmmo(playerid);
Arma2[c][1] = mun;
Arma2[c][2] = 1;
format(sStr, sizeof(sStr), "Você colocou a arma de ID %d com %d munições no portaluvas.",GetPlayerWeapon(playerid),mun);
SendClientMessage(playerid, Amarelo, sStr);
RemovePlayerWeapon(playerid, GetPlayerWeapon(playerid));
}

Falcon.
05/06/2011, 07:32 PM
Eu não quero criar um codigo, eu só quero saber como que este funciona.

Como você mesmo disse não tem função ai que verifique isto, se você quer uma coisa que não contenha em seu script e não deseja criar...
:neutral:

Não seria melhor utilizar o GetPlayerWeaponData para isto que deseja fazer ? '-'

Shadoww5
05/06/2011, 08:59 PM
Tenho a ligeira impressão que você não leu meu post.

Eu falei que não quero o codigo, nem quero criá-lo, somente queria saber se alguem sabe como que funciona aquele codigo sem repetição de numeros.

Quanto à minha outra duvida, eu irei tentar fazer algo aqui com o GetPlayerWeaponData.

Mas se alguem souber o que está causando o erro, peço que me ajude.

OBS: No topo do GM tem esta array:

new Arma2[MAX_VEHICLES][3];

generaka
06/06/2011, 06:50 AM
Olá, criei um game mod basico, mas quando coloco ele online e tento conectar, não aparece pra selecionar as skin.
eu coloquei os ids da skin as coordenadas as munições e armas que ira nascer mais não aparece nada, oque devo fazer ?

Shadoww5
06/06/2011, 09:03 AM
Colocou as skins, munições, armas, etc .. no AddPlayerClass ?

generaka
06/06/2011, 09:42 PM
Colocou as skins, munições, armas, etc .. no AddPlayerClass ?

sim. olha como está o game mod e ve se está certo:

//------------------------------------------------------------------------------
//Gamemode: Guerra Los Vagos X Groove Street
//Feito por : PureGewalt
//ATENÇÃO: "Não retire os créditos"
//ATENÇÃO: GM distribuido com a condição de NÃO ALTERAR o comando /creditos
//MSN: bru_1dasul@hotmail.com
//------------------------------------------------------------------------------
#pragma tabsize 0
#include "a_samp.inc"
#define JFS_OWNA 9122
public OnGameModeInit()
{
UsePlayerPedAnims(); // PRA CORRER NORMAL
// =========================== TODAS AS SKINS DO JOGO ======================

AddPlayerClass(106,2494.7449,-1685.3438,13.5118,8.8306); // Skin Groove
AddPlayerClass(107,2494.7449,-1685.3438,13.5118,8.8306); // Skin Groove
AddPlayerClass(105,2494.7449,-1685.3438,13.5118,8.8306); // Skin Groove
AddPlayerClass(106,2494.7449,-1685.3438,13.5118,8.8306); // Skin Groove
AddPlayerClass(13,2494.7449,-1685.3438,13.5118,8.8306); // Skin Groove
AddPlayerClass(108,733.8808,-1355.7417,18.8125,273.4545); // SKIN LOS VAGOS
AddPlayerClass(109,733.8808,-1355.7417,18.8125,273.4545); // SKIN LOS VAGOS
AddPlayerClass(110,733.8808,-1355.7417,18.8125,273.4545); // SKIN LOS VAGOS
AddPlayerClass(12,733.8808,-1355.7417,18.8125,273.4545); // SKIN LOS VAGOS

// =========================== Carros da HQ Groove ======================

AddStaticVehicle(495,2512.1790,-1665.3683,13.5748,102.8315,86,86); // CARRO
AddStaticVehicle(495,2512.8171,-1673.8953,13.5134,155.8579,86,86); // CARRO
AddStaticVehicle(560,2508.6643,-1657.4443,13.5938,98.4448,86,86); // carro
AddStaticVehicle(560,2501.5278,-1653.9095,13.4700,88.7314,86,86); // carro
AddStaticVehicle(560,2481.9417,-1684.6458,13.5078,41.1043,86,86); // carro
AddStaticVehicle(495,768.7696,-1334.0712,13.5413,178.8035,6,6); // carros los vagos
AddStaticVehicle(495,763.1823,-1335.2855,13.5387,181.9369,6,6); // carros los vagos
AddStaticVehicle(560,759.1560,-1334.6492,13.5401,185.3836,6,6); // carros los vagos
AddStaticVehicle(560,752.6501,-1334.7467,13.5399,191.6503,6,6); // carros los vagos
AddStaticVehicle(560,747.3741,-1334.6166,13.5401,182.2502,6,6); // carros los vagos

// =========================== Msg do servidor ======================

SendClientMessage(playerid, 0x1600E0AA, ">> Game mod desenvolvido por PureGewalt /creditos <<
SendClientMessage(playerid, 0x1600E0AA, ">> Digite /regras para não fazer merda!!! <<
SendClientMessage(playerid, 0x1600E0AA, ">> Nunca faça DB ou será PUNIDO! <<
SendClientMessage(playerid, 0x1600E0AA, ">> Dúvidas? /relatorio chame um admin! <<
SendClientMessage(playerid, 0x1600E0AA, ">> Não sabe os comandos? digite /comandos <<
SendClientMessage(playerid, 0x1600E0AA, ">> Não sabe qual é o Objetivo do game mod? digite /ajuda <<

Ps: tirei a munição e as armas. irei ve se consigo criar um /equipar na Hq Groove e Los Vagos.