comando de nitro - LOS_SANTOS - 08/04/2024
gostaria de saber como crio um comando de adicionar nitro em veiculos , mas que nao funcione em motos, barcos ,helicopteros ,bicicleta
em zcmd
Código: CMD:nitro(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, ">!< voce nao esta em um veiculo");
if(GetPlayerMoney(playerid) < 300) return SendClientMessage(playerid, RED, ">!< voce nao tem dinheiro suficiente para comprar nitro.");
AddVehicleComponent(vehicleid, 1010); // Nitro
SendClientMessage(playerid, -1, "<!> voce adicionou o nitro no veiculo");
SendClientMessage(playerid, -1, ">!< Você comprou nitro por $300.");
GivePlayerMoney(playerid, -300);
return 1;
}
nao sei como posso fazer para que se um player estiver em moto ou aviao ou heli ou barco receba uma mensagem dizendo que esse veiculo nao pode usar nitro , so isso nada a mais
RE: comando de nitro - xbruno1000x - 08/04/2024
Código: CMD:nitro(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, ">!< voce nao esta em um veiculo");
if(GetPlayerMoney(playerid) < 300) return SendClientMessage(playerid, RED, ">!< voce nao tem dinheiro suficiente para comprar nitro.");
if(GetVehicleModel(vehicleid) != 417 && GetVehicleModel(vehicleid) != 425 && GetVehicleModel(vehicleid) != 430 && GetVehicleModel(vehicleid) != 435 && GetVehicleModel(vehicleid) != 441 && GetVehicleModel(vehicleid) != 446 && GetVehicleModel(vehicleid) != 447 && GetVehicleModel(vehicleid) != 448 && GetVehicleModel(vehicleid) != 449 && GetVehicleModel(vehicleid) != 450 &&
GetVehicleModel(vehicleid) != 452 && GetVehicleModel(vehicleid) != 453 && GetVehicleModel(vehicleid) != 454 && GetVehicleModel(vehicleid) != 460 && GetVehicleModel(vehicleid) != 461 && GetVehicleModel(vehicleid) != 462 && GetVehicleModel(vehicleid) != 463 && GetVehicleModel(vehicleid) != 464 && GetVehicleModel(vehicleid) != 465 && GetVehicleModel(vehicleid) != 468 &&
GetVehicleModel(vehicleid) != 469 && GetVehicleModel(vehicleid) != 472 && GetVehicleModel(vehicleid) != 473 && GetVehicleModel(vehicleid) != 476 && GetVehicleModel(vehicleid) != 481 && GetVehicleModel(vehicleid) != 484 && GetVehicleModel(vehicleid) != 487 && GetVehicleModel(vehicleid) != 488 && GetVehicleModel(vehicleid) != 493 && GetVehicleModel(vehicleid) != 497 &&
GetVehicleModel(vehicleid) != 501 && GetVehicleModel(vehicleid) != 509 && GetVehicleModel(vehicleid) != 510 && GetVehicleModel(vehicleid) != 511 && GetVehicleModel(vehicleid) != 512 && GetVehicleModel(vehicleid) != 513 && GetVehicleModel(vehicleid) != 519 && GetVehicleModel(vehicleid) != 520 && GetVehicleModel(vehicleid) != 521 && GetVehicleModel(vehicleid) != 522 &&
GetVehicleModel(vehicleid) != 523 && GetVehicleModel(vehicleid) != 537 && GetVehicleModel(vehicleid) != 538 && GetVehicleModel(vehicleid) != 539 && GetVehicleModel(vehicleid) != 548 && GetVehicleModel(vehicleid) != 553 && GetVehicleModel(vehicleid) != 563 && GetVehicleModel(vehicleid) != 564 && GetVehicleModel(vehicleid) != 569 && GetVehicleModel(vehicleid) != 570 &&
GetVehicleModel(vehicleid) != 577 && GetVehicleModel(vehicleid) != 581 && GetVehicleModel(vehicleid) != 584 && GetVehicleModel(vehicleid) != 586 && GetVehicleModel(vehicleid) != 590 && GetVehicleModel(vehicleid) != 591 && GetVehicleModel(vehicleid) != 592 && GetVehicleModel(vehicleid) != 593 && GetVehicleModel(vehicleid) != 594 && GetVehicleModel(vehicleid) != 595 &&
GetVehicleModel(vehicleid) != 606 && GetVehicleModel(vehicleid) != 607 && GetVehicleModel(vehicleid) != 608 && GetVehicleModel(vehicleid) != 610 && GetVehicleModel(vehicleid) != 611)
{
AddVehicleComponent(vehicleid, 1010); // Nitro
SendClientMessage(playerid, -1, "<!> voce adicionou o nitro no veiculo");
SendClientMessage(playerid, -1, ">!< Você comprou nitro por $300.");
GivePlayerMoney(playerid, -300);
}else{
return SendClientMessage(playerid, -1, "<!> ERRO: Seu veículo não suporta Nitro.");
}
return 1;
}
Tenta assim
RE: comando de nitro - Alfarr Heimrik - 17/06/2024
Tem como definir o tempo do nitro? tipo, algo como nitro infinito.
Estava pensando em selecionar uma tecla para executar o comando acima e tirar as verificações,
escolhendo apenas 1: verificar se o player é ADMIN.
Da pra fazer isso ou é preciso esperar aquele tempo de recarga do nitro?
(08/04/2024 23:25)xbruno1000x Escreveu: Código: CMD:nitro(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, ">!< voce nao esta em um veiculo");
if(GetPlayerMoney(playerid) < 300) return SendClientMessage(playerid, RED, ">!< voce nao tem dinheiro suficiente para comprar nitro.");
if(GetVehicleModel(vehicleid) != 417 && GetVehicleModel(vehicleid) != 425 && GetVehicleModel(vehicleid) != 430 && GetVehicleModel(vehicleid) != 435 && GetVehicleModel(vehicleid) != 441 && GetVehicleModel(vehicleid) != 446 && GetVehicleModel(vehicleid) != 447 && GetVehicleModel(vehicleid) != 448 && GetVehicleModel(vehicleid) != 449 && GetVehicleModel(vehicleid) != 450 &&
GetVehicleModel(vehicleid) != 452 && GetVehicleModel(vehicleid) != 453 && GetVehicleModel(vehicleid) != 454 && GetVehicleModel(vehicleid) != 460 && GetVehicleModel(vehicleid) != 461 && GetVehicleModel(vehicleid) != 462 && GetVehicleModel(vehicleid) != 463 && GetVehicleModel(vehicleid) != 464 && GetVehicleModel(vehicleid) != 465 && GetVehicleModel(vehicleid) != 468 &&
GetVehicleModel(vehicleid) != 469 && GetVehicleModel(vehicleid) != 472 && GetVehicleModel(vehicleid) != 473 && GetVehicleModel(vehicleid) != 476 && GetVehicleModel(vehicleid) != 481 && GetVehicleModel(vehicleid) != 484 && GetVehicleModel(vehicleid) != 487 && GetVehicleModel(vehicleid) != 488 && GetVehicleModel(vehicleid) != 493 && GetVehicleModel(vehicleid) != 497 &&
GetVehicleModel(vehicleid) != 501 && GetVehicleModel(vehicleid) != 509 && GetVehicleModel(vehicleid) != 510 && GetVehicleModel(vehicleid) != 511 && GetVehicleModel(vehicleid) != 512 && GetVehicleModel(vehicleid) != 513 && GetVehicleModel(vehicleid) != 519 && GetVehicleModel(vehicleid) != 520 && GetVehicleModel(vehicleid) != 521 && GetVehicleModel(vehicleid) != 522 &&
GetVehicleModel(vehicleid) != 523 && GetVehicleModel(vehicleid) != 537 && GetVehicleModel(vehicleid) != 538 && GetVehicleModel(vehicleid) != 539 && GetVehicleModel(vehicleid) != 548 && GetVehicleModel(vehicleid) != 553 && GetVehicleModel(vehicleid) != 563 && GetVehicleModel(vehicleid) != 564 && GetVehicleModel(vehicleid) != 569 && GetVehicleModel(vehicleid) != 570 &&
GetVehicleModel(vehicleid) != 577 && GetVehicleModel(vehicleid) != 581 && GetVehicleModel(vehicleid) != 584 && GetVehicleModel(vehicleid) != 586 && GetVehicleModel(vehicleid) != 590 && GetVehicleModel(vehicleid) != 591 && GetVehicleModel(vehicleid) != 592 && GetVehicleModel(vehicleid) != 593 && GetVehicleModel(vehicleid) != 594 && GetVehicleModel(vehicleid) != 595 &&
GetVehicleModel(vehicleid) != 606 && GetVehicleModel(vehicleid) != 607 && GetVehicleModel(vehicleid) != 608 && GetVehicleModel(vehicleid) != 610 && GetVehicleModel(vehicleid) != 611)
{
AddVehicleComponent(vehicleid, 1010); // Nitro
SendClientMessage(playerid, -1, "<!> voce adicionou o nitro no veiculo");
SendClientMessage(playerid, -1, ">!< Você comprou nitro por $300.");
GivePlayerMoney(playerid, -300);
}else{
return SendClientMessage(playerid, -1, "<!> ERRO: Seu veículo não suporta Nitro.");
}
return 1;
}
Tenta assim
Tem como definir o tempo do nitro? tipo, algo como nitro infinito.
Estava pensando em selecionar uma tecla para executar o comando acima e tirar as verificações,
escolhendo apenas 1: verificar se o player é ADMIN.
Da pra fazer isso ou é preciso esperar aquele tempo de recarga do nitro?
Eu fiz dessa forma, mas não está funcionando corretamente.
Código PHP: if(newkeys == KEY_FIRE) { if(IsPlayerInAnyVehicle(playerid)) { new VehID = GetPlayerVehicleID(playerid); AddVehicleComponent(VehID, 1010); } }
RE: comando de nitro - xbruno1000x - 17/06/2024
(17/06/2024 11:31)Alfarr Heimrik Escreveu: Tem como definir o tempo do nitro? tipo, algo como nitro infinito.
Estava pensando em selecionar uma tecla para executar o comando acima e tirar as verificações,
escolhendo apenas 1: verificar se o player é ADMIN.
Da pra fazer isso ou é preciso esperar aquele tempo de recarga do nitro?
Eu fiz dessa forma, mas não está funcionando corretamente.
Código PHP: if(newkeys == KEY_FIRE) { if(IsPlayerInAnyVehicle(playerid)) { new VehID = GetPlayerVehicleID(playerid); AddVehicleComponent(VehID, 1010); } }
Dessa maneira está correto.
Eu uso algo assim:
Código: if((newkeys & KEY_FIRE) && IsPlayerInAnyVehicle(playerid))
{
new vehicleid = GetPlayerVehicleID(playerid);
if(PlayerInfo[playerid][pVIP] >= 1) AddVehicleComponent(vehicleid, 1010);
return 1;
}
RE: comando de nitro - Alfarr Heimrik - 17/06/2024
Se eu precisar da KEY FIRE para outras funções, eu posso simplesmente ter 2 funções chamando a KEY, ou eu preciso bolar uma estratégia em uma só chamada?
if(newkeys == KEY_FIRE)
{
sistema de nitro
}
if(newkeys == KEY_FIRE)
{
Algum outro sistema
}
RE: comando de nitro - White_Blue - 17/06/2024
Nunca utilize o operador de igualdade para verificar teclas. Isso é incorreto e pode causar diversos conflitos.
Sempre utilize o operador & (Bitwise AND).
Mais informações na documentação: https://www.open.mp/docs/scripting/callbacks/OnPlayerKeyStateChange
RE: comando de nitro - xbruno1000x - 17/06/2024
(17/06/2024 14:04)Alfarr Heimrik Escreveu: Se eu precisar da KEY FIRE para outras funções, eu posso simplesmente ter 2 funções chamando a KEY, ou eu preciso bolar uma estratégia em uma só chamada?
if(newkeys == KEY_FIRE)
{
sistema de nitro
}
if(newkeys == KEY_FIRE)
{
Algum outro sistema
}
Não há nenhum problema em utilizar duas vezes a mesma tecla, desde que tenha feito as condições de maneira correta.
Por exemplo:
Irei usar a KEY_FIRE dentro do veículo para o nitro e fora do carro para acessar portas.
Código: if((newkeys & KEY_FIRE) && IsPlayerInAnyVehicle(playerid)){
sistema de nitro;
}
if((newkeys & KEY_FIRE) && !IsPlayerInAnyVehicle(playerid)){
setPlayerPos();
}
RE: comando de nitro - Calasans - 18/06/2024
Invés de criar um comando com várias verificações para executar coisas simples, basta usar a biblioteca VeiculoFuncoes e criar um simples comando. Veja um exemplo:
Código PHP: CMD:nitro(playerid) { new vehicleid = GetPlayerVehicleID(playerid); // if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, ">!< voce nao esta em um veiculo"); if(GetPlayerMoney(playerid) < 300) return SendClientMessage(playerid, RED, ">!< voce nao tem dinheiro suficiente para comprar nitro."); // Veiculo_Tunar(true, NITRO_0, NON_GLOBAL_VEHICLES, 0xFFFFFFFF, "<!> voce adicionou o nitro no veiculo.", vehicleid, playerid); // true adiciona, false remove. // A definição de nitro começa de NITRO_0 e vai até NITRO_2. // SendClientMessage(playerid, -1, ">!< Você comprou nitro por $300."); // GivePlayerMoney(playerid, -300); // return true; }
A versão 1.0.4 está em desenvolvimento, e terá suporte a adicionar setas aos veículos, utilizar MapIcons e entre outras coisas que poderá utilizar.
RE: comando de nitro - Alfarr Heimrik - 23/06/2024
(17/06/2024 18:07)White_Blue Escreveu: Nunca utilize o operador de igualdade para verificar teclas. Isso é incorreto e pode causar diversos conflitos.
Sempre utilize o operador & (Bitwise AND).
Mais informações na documentação: https://www.open.mp/docs/scripting/callbacks/OnPlayerKeyStateChange
Eu li o artigo e entendi. Muito obrigado.
(17/06/2024 18:34)xbruno1000x Escreveu: (17/06/2024 14:04)Alfarr Heimrik Escreveu: Se eu precisar da KEY FIRE para outras funções, eu posso simplesmente ter 2 funções chamando a KEY, ou eu preciso bolar uma estratégia em uma só chamada?
if(newkeys == KEY_FIRE)
{
sistema de nitro
}
if(newkeys == KEY_FIRE)
{
Algum outro sistema
}
Não há nenhum problema em utilizar duas vezes a mesma tecla, desde que tenha feito as condições de maneira correta.
Por exemplo:
Irei usar a KEY_FIRE dentro do veículo para o nitro e fora do carro para acessar portas.
Código: if((newkeys & KEY_FIRE) && IsPlayerInAnyVehicle(playerid)){
sistema de nitro;
}
if((newkeys & KEY_FIRE) && !IsPlayerInAnyVehicle(playerid)){
setPlayerPos();
}
Hm entendi. Eu estava com essa dúvida.
Você acha que tem problema usar apenas uma verificação e colocar diversos códigos (funcionalidades)
nele, ou seria bom fazer múltiplas verificações como você demonstrou?
RE: comando de nitro - xbruno1000x - 25/06/2024
(23/06/2024 18:39)Alfarr Heimrik Escreveu: (17/06/2024 18:34)xbruno1000x Escreveu: Não há nenhum problema em utilizar duas vezes a mesma tecla, desde que tenha feito as condições de maneira correta.
Por exemplo:
Irei usar a KEY_FIRE dentro do veículo para o nitro e fora do carro para acessar portas.
Código: if((newkeys & KEY_FIRE) && IsPlayerInAnyVehicle(playerid)){
sistema de nitro;
}
if((newkeys & KEY_FIRE) && !IsPlayerInAnyVehicle(playerid)){
setPlayerPos();
}
Hm entendi. Eu estava com essa dúvida.
Você acha que tem problema usar apenas uma verificação e colocar diversos códigos (funcionalidades)
nele, ou seria bom fazer múltiplas verificações como você demonstrou?
Se você estiver usando a mesma tecla para coisas muito diferentes, acho boa pratica colocar mais condições. Se fosse apenas newkeys & KEY_FIRE ali, daria o problema de você entrar num local e o servidor também tentar executar o código de nitro. O ideal é isolar o máximo possível as coisas.
|