galera porq quando eu uso o comando kart eu spawno no nada e o player nao entra dentro do veiculo para iniciar o evento? outra coisa porq quando passo do primeiro check point o segundo checkpoint nao segue a ordem que coloquei no float ele vai para outro lugar nada aver me ajude nesse script estou sem saber oq fazer
new playerinminigame[MAX_PLAYERS];
new karts[15],kartfull[15],karton,kartplaying,playerinkartrace[MAX_PLAYERS],kartrank,playerinkart[MAX_PLAYERS],currentcheckpoint[MAX_PLAYERS],krtfirst,playercarid[MAX_PLAYERS],reward;
forward RewardCalc(playerid,min,max);
new startvar[8];
new krttimer;
public SpawnKarts()
{
for (new i = 0; i < 15; i++)
{
karts[i] = CreateVehicle(571, kartspawns[i][0], kartspawns[i][1], kartspawns[i][2], kartspawns[i][3], -1, -1, -1);
LinkVehicleToInterior(karts[i], 15);
SetVehicleVirtualWorld(karts[i], 1);
kartfull[i] = 0;
}
return 1;
}
public DestroyKarts()
{
for (new i = 0; i < 15; i++)
{
DestroyVehicle(karts[i]);
kartfull[i] = 0;
}
}
public RespawnKarts()
{
for (new i = 0; i < 15; i++)
{
SetVehicleToRespawn(karts[i]);
SetVehicleVirtualWorld(karts[i], 1);
kartfull[i] = 0;
}
}
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
SetTimer("load", 2000, 0);
return 1;
}
public OnFilterScriptExit()
{
DestroyKarts();
return 1;
}
#endif
public OnGameModeInit()
{
SetTimer("load", 2000, 0);
return 1;
}
public StartKart()
{
if(startvar[6] == 1) {
if( kartrank <= 1 )//menor q 1
{
SendClientMessageToAll(0x33AA33AA, "corrida de Kart cancelado. Motivo: Jogadores Insuficientes (Minimo = 2)");
kartplaying = 0;
kartrank = 0;
karton = 0;
startvar[6] = 0;
RespawnKarts();
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (playerinkartrace[i] == 1)
{
playerinkartrace[i] = 0;
playerinminigame[i] = 0;
playerinkart[i] = -1;
SetPlayerVirtualWorld(i,0);
SetPlayerInterior(i, 15);
SetPlayerPos(i, spawnX,spawnY,spawnZ);
TogglePlayerControllable(i, 1);
}
}
}
return 1;
}
new string[32];
format(string, sizeof(string), "~r~3");
new gdelay=1000;
kartplaying = 1;
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (playerinkartrace[i] == 1)
{
GameTextForPlayer(i, string, gdelay, 6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
}
}
}
startvar[6] = 2;
SetTimer("StartKart", gdelay, 0);
} else if(startvar[6] == 2) {
new string[32];
format(string, sizeof(string), "~r~2");
new hdelay=1000;
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (playerinkartrace[i] == 1)
{
GameTextForPlayer(i, string, hdelay, 6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
}
}
}
startvar[6] = 3;
SetTimer("StartKart", hdelay, 0);
} else if(startvar[6] == 3) {
new rdelay=1000;
new string[32];
format(string, sizeof(string), "~g~1!");
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (playerinkartrace[i] == 1)
{
GameTextForPlayer(i, string, rdelay, 6);
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
TogglePlayerControllable(i, 1);
}
}
}
SetTimer("KrtFinish",300000,0);
startvar[6] = 0;
}
return 1;
}
public KrtFinish()
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (playerinkartrace[i] == 1)
{
playerinkartrace[i] = 0;
playerinminigame[i] = 0;
SetPlayerVirtualWorld(i,0);
SetPlayerInterior(i, 0);
SetPlayerPos(i, spawnX, spawnY, spawnZ);
}
}
}
kartplaying = 0;
kartrank = 0;
karton = 0;
RespawnKarts();
SendClientMessageToAll(0x33AA33AA, "A corrida de kart acabou");
return 1;
}
public OnGameModeExit()
{
DestroyKarts();
return 1;
}
public OnPlayerConnect(playerid)
{
playerinminigame[playerid] = 0; // Checks if a player is in a minigame
playerinkartrace[playerid] = 0; // Kart Race
playerinkart[playerid] = -1;
//currentcheckpoint[playerid] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new str[256]; // Declarando a variável 'str' corretamente
if (playerinkartrace[playerid] == 1)
{
new KartPlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, KartPlayerName, sizeof(KartPlayerName));
format(str, sizeof(str), "%s foi descartado da corrida de kart", KartPlayerName); // Agora 'str' está declarado corretamente
SendClientMessageToAll(0x33AA33AA, str); // Enviando a mensagem para todos
playerinkartrace[playerid] = 0;
playerinminigame[playerid] = 0;
kartfull[playerinkart[playerid]] = 0;
playerinkart[playerid] = -1;
if (kartrank <= 1)
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && playerinkartrace[i] == 1)
{
playerinkartrace[i] = 0;
playerinminigame[i] = 0;
SetPlayerVirtualWorld(i, 0);
SetPlayerInterior(playerid, 0);
SetPlayerPos(i, spawnX, spawnY, spawnZ);
}
}
kartplaying = 0;
kartrank = 0;
karton = 0;
KillTimer(krttimer);
RespawnKarts();
return 1;
}
kartrank--;
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
new str[256]; // Declarando a variável 'str' corretamente
if (playerinkartrace[playerid] == 1)
{
new KartPlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, KartPlayerName, sizeof(KartPlayerName));
format(str, sizeof(str), "%s foi descartado da corrida de kart", KartPlayerName); // Agora 'str' está declarado corretamente
SendClientMessageToAll(0x33AA33AA, str); // Enviando a mensagem para todos
playerinkartrace[playerid] = 0;
playerinminigame[playerid] = 0;
kartfull[playerinkart[playerid]] = 0;
playerinkart[playerid] = -1;
if (kartrank <= 1)
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && playerinkartrace[i] == 1)
{
playerinkartrace[i] = 0;
playerinminigame[i] = 0;
SetPlayerVirtualWorld(i, 0);
SetPlayerInterior(playerid, 0);
SetPlayerPos(i, spawnX, spawnY, spawnZ);
}
}
kartplaying = 0;
kartrank = 0;
karton = 0;
KillTimer(krttimer);
RespawnKarts();
return 1;
}
kartrank--;
}
// }
return 1;
}
CMD:kart(playerid)
{
if(kartplaying == 1)return SendClientMessage(playerid, 0xB4B5B7AA, "A corrida de kart já começou");
if(playerinminigame[playerid] == 1)return SendClientMessage(playerid, 0xB4B5B7AA, "Você já está em um minigame");
new pname[256];
GetPlayerName(playerid, pname, 256);
new str[256]; // Declarando a variável 'str' corretamente
if(karton == 0)
{
karton = 1;
playerinminigame[playerid] = 1;
playerinkartrace[playerid] = 1;
kartrank = 1;
krtfirst = 1;
currentcheckpoint[playerid] = 0;
SetPlayerInterior(playerid, 15);
SetPlayerVirtualWorld(playerid, 7);
SetVehicleVirtualWorld(karts[0], 7);
kartfull[0] = 1;
PutPlayerInVehicle(playerid, karts[0], 0);
playerinkart[playerid] = 0;
TogglePlayerControllable(playerid, 0);
SetPlayerRaceCheckpoint(playerid, 0, kcps[0][0], kcps[0][1], kcps[0][2], kcps[1][0], kcps[1][1], kcps[1][2], 20);
startvar[6] = 1;
krttimer = SetTimer("StartKart", 60000, 0);
format(str, sizeof(str), "%s[%s] entrou no evento [kart], /kart", pname,playerid); // Agora 'str' está declarado corretamente
SendClientMessageToAll(0x33AA33AA, str); // Enviando a mensagem para todos
return 1;
}
else if(karton == 1 && kartrank < 15) {
playerinminigame[playerid] = 1;
playerinkartrace[playerid] = 1;
kartrank++;
currentcheckpoint[playerid] = 0;
SetPlayerInterior(playerid, 15);
for(new i=0; i<15; i++)
{
if(kartfull[i] == 0)
{
SetPlayerVirtualWorld(playerid, 7);
SetVehicleVirtualWorld(karts[i], 7);
kartfull[i] = 1;
PutPlayerInVehicle(playerid, karts[i], 0);
TogglePlayerControllable(playerid, 0);
SetPlayerRaceCheckpoint(playerid, 0, kcps[0][0], kcps[0][1], kcps[0][2], kcps[1][0], kcps[1][1], kcps[1][2], 20);
playerinkart[playerid] = i;
format(str, sizeof(str), "%s juntou-se a corrida de kart", pname); // Agora 'str' está declarado corretamente
SendClientMessageToAll(0x33AA33AA, str); // Enviando a mensagem para todos
return 1;
}
}
}
else if(karton == 1 && kartrank >= 15) {
format(str, sizeof(str), "A corrida de kart está cheia, esperar para a próxima rodada", pname); // Agora 'str' está declarado corretamente
SendClientMessage(playerid, 0x33AA33AA, str); // Enviando a mensagem para o jogador
return 1;
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == 2)
{
playercarid[playerid] = GetPlayerVehicleID(playerid);
}
if(oldstate == 2)
{
if(playerinkartrace[playerid])
{
PutPlayerInVehicle(playerid,playercarid[playerid],0);
}
}
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
if (playerinkartrace[playerid])
{
if (currentcheckpoint[playerid] <= 2)
{
currentcheckpoint[playerid]++;
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, kcps[currentcheckpoint[playerid]][0], kcps[currentcheckpoint[playerid]][1], kcps[currentcheckpoint[playerid]][2],
kcps[currentcheckpoint[playerid] + 1][0], kcps[currentcheckpoint[playerid] + 1][1], kcps[currentcheckpoint[playerid] + 1][2], 20);
}
else if (currentcheckpoint[playerid] >= 3 && currentcheckpoint[playerid] != 7)
{
currentcheckpoint[playerid]++;
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, kcps[currentcheckpoint[playerid] - 4][0], kcps[currentcheckpoint[playerid] - 4][1],
kcps[currentcheckpoint[playerid] - 4][2], kcps[currentcheckpoint[playerid] - 3][0], kcps[currentcheckpoint[playerid] - 3][1],
kcps[currentcheckpoint[playerid] - 3][2], 20);
}
else if (currentcheckpoint[playerid] == 7)
{
if (krtfirst == 1)
{
DisablePlayerRaceCheckpoint(playerid);
new string[256];
krtfirst++;
kartrank--;
new winnername[256];
GetPlayerName(playerid, winnername, sizeof(winnername));
RewardCalc(playerid, 5000, 10000);
format(string, sizeof(string), "%s ganhou a corrida de kart e ganhou $%d", winnername, reward);
SendClientMessageToAll(0x33AA33AA, string);
GivePlayerMoney(playerid, reward);
playerinkartrace[playerid] = 0;
playerinminigame[playerid] = 0;
currentcheckpoint[playerid] = 0;
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, spawnX, spawnY, spawnZ);
oi gente tenho esse script aqui para salvamento de armas queria saber o porq nao ta salvando quando adquiro uma arma no servidor e quando conecto nao salva ja criei uma pasta chamada weapons dentro da scriptfeles mas mesmo assim nada algum script que entenda mais pode me salvar?
SkinGender - Identificação Profissional de Gênero de Skins no SA-MP / Open.MP
Sistema avançado, eficiente e otimizado para identificar de forma precisa o gênero das skins no SA-MP e Open.MP, com validação de IDs e personalização simples para atender às necessidades de gamemodes e filterscripts.
Recursos e Funcionalidades:
Identificação de gênero de skins com desempenho O(1), garantindo alta performance em servidores com grande número de jogadores.
Compatibilidade total com gamemodes e filterscripts, permitindo fácil integração em qualquer projeto.
Validação automática dos IDs das skins, evitando erros com skins inválidas ou desconhecidas.
Textos totalmente personalizáveis para os gêneros (masculino, feminino, inválido), permitindo adaptar a solução à linguagem ou estilo do servidor.
---
Instruções de Instalação e Configuração:
1. Adicione o arquivo `SkinGender.inc` à pasta `includes` do seu projeto.
2. Inclua a linha de código abaixo no seu script principal para carregar o sistema:
Código PHP:
#include <SkinGender>
3. Personalização de textos (opcional): Se deseja personalizar os textos usados para identificar os gêneros, defina as variáveis de texto antes da inclusão:
4. Desativação do `y_hooks` (opcional): Caso não deseje usar a funcionalidade `y_hooks`, basta desativá-la antes da inclusão com a seguinte diretiva:
Código PHP:
#define SKG_NO_Y_HOOKS
---
Funções Disponíveis:
IsMaleSkinID(skinid): Verifica se o ID fornecido corresponde a uma skin masculina. Retorna verdadeiro ou falso.
IsFemaleSkinID(skinid): Verifica se o ID fornecido corresponde a uma skin feminina. Retorna verdadeiro ou falso.
GetSkinGenderText(skinid): Retorna o texto associado ao gênero da skin fornecida. Exemplos: "Masculino", "Feminino" ou "Inválido", caso o ID da skin não seja válido.
IsValidSkinID(skinid): Verifica se o ID fornecido é válido dentro do sistema. Retorna verdadeiro ou falso.
---
Exemplo de Uso do Sistema:
Código PHP:
if(IsMaleSkinID(22)) { print("A skin id 22 é masculina"); } else if(IsFemaleSkinID(9)) { print("A skin id 9 é feminina"); } else if(!IsValidSkinID(555)) { print("A skin id 555 é inválida."); }
printf("A skin id 280 é: %s", GetSkinGenderText(280));
---
Informações do Projeto:
Autor: BitSain (Leonardo) Contato para Suporte e Dúvidas: bitsaindeveloper@gmail.com Repositório GitHub:Clique aqui. Licença: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
---
Licenciamento e Termos de Uso:
Este projeto é licenciado sob a Creative Commons Attribution-ShareAlike 4.0. Você é livre para compartilhar e adaptar o conteúdo, desde que dê o devido crédito e compartilhe sob a mesma licença. Para mais informações, consulte a Licença Completa.
Estou apenas puxando o módulo de comandos que tem 1 comando para testar e me aparece esse erro:
Código PHP:
E:\SAMP\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\..\YSI_Core\y_core\y_scriptinit_impl.inc(772) : error 025: function heading differs from prototype E:\SAMP\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\..\YSI_Core\y_core\y_scriptinit_impl.inc(772) : warning 231: state specification on forward declaration is ignored E:\SAMP\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\..\YSI_Core\y_core\y_scriptinit_impl.inc(774) : error 025: function heading differs from prototype E:\SAMP\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\..\YSI_Core\y_core\y_scriptinit_impl.inc(1092) : warning 201: redefinition of constant/macro (symbol "OnScriptInit(%0)")
e ao criar comandos no módulo resulta esse erro
Código PHP:
../modules/players/cmds.pwn(3) : error 021: symbol already defined: "cmd_teste"
Bom eu estou passando por esse problema a muito tempo e tudo que fiz nada até agora resolveu. O bug é o seguinte... Eu ligo a GM na vps e depois de um tempão os mappas simplesmente some. Já tentei fazer de tudo. Trocar include/plugin streamer, tirei crashdetect(dizem que atrapalha o carregamento dos mappas), tirei todos os mappas também e deixei só um para ver se era algum mappa dando conflito e também o mapa que deixei sumiu depois de um tempo, revirei todos os OnGameModeInt incluindo dos módulos e não vi nada que possa atrapalhar algo do tipo.
Não sei mais o que fazer, o que vocês pode me aconselhar a fazer?
Inicialmente esse sistema foi criado para simplificar os clicks nas textdraws evitando o uso do ALS e HOOK com um objetivo direto e adicionar interações. Porem acabou que essa include nos testes que eu fiz, melhorou muito a resposta nos cliques ficando muito mais fluido e rápido. Inclusive testei com um servidor quase cheio e deu o mesmo resultado como se eu tivesse solo, os cliques responderam instantaneamente praticamente.
Vou deixar abaixo alguns exemplos de uso porem para mais detalhes ou reportes de problemas acessem o repositório no github.
Código de textdraw abaixo é apenas para ilustrações do funcionamento do SetClick
Padrão
Código:
stock CreateTextdraw(playerid) {
// A simple example of textdraw creation, just to illustrate SetClick.
new PlayerText:id = CreatePlayerTextDraw(playerid, 0.0, 0.0, "LD_SPAC:white") // or box, whatever
PlayerTextDrawSetSelectable(playerid, id, true);
So tinha eu no servidor On-line e isso apareceu
[debug]:
Citar:[debug] Parameter count corrections:
[debug]
[debug] The 1st mangled arguments (e.g. `<1073741823 arguments>`) below should read `<2 arguments>`
[debug] Parameter count loop detected.
[debug]
[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 20200 in array of size 300
[debug] AMX backtrace:
[debug] #0 0002c964 in _@yHOnPlayerDisconnect@04 (playerid=20200, reason=0) at ..\Dependencias\Global\Login.inc:94
[debug] #1 0001bbe8 in public ScriptInit_OnPlayerDisconnect (20200, 0) at C:\Users\gabri\OneDrive\Área de Trabalho\Samp Servers\RJ ACADEMY\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\y_cgen\y_cgen_impl.inc:157
[debug] #2 0000b758 in public Android_OnPlayerDisconnect (playerid=20200, reason=0) at C:\Users\gabri\OneDrive\Área de Trabalho\Samp Servers\RJ ACADEMY\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\..\YSI_Core\y_core\../y_utils/y_utils_ip.inc:115
[debug] #3 00009810 in public Iter_OnPlayerDisconnect (playerid=20200) at C:\Users\gabri\OneDrive\Área de Trabalho\Samp Servers\RJ ACADEMY\pawno\include\YSI-Includes\YSI_Coding\y_hooks\..\..\YSI_Core\y_core\..\..\YSI_Players\y_android\y_android_entry.inc:148