Galera eu gostaria que quando o player chegar em determinado checkpoint ele recebesse uma quantia de dinheiro diferente, pois alguns CP são mais longes outros mais pertos.
Venho apresentar um projeto ainda em desenvolvimento focado em rp porém nao é um rp pesado cheio de regras mas sim mais liberal.
O projeto ainda está longe de estar terminado mas já temos bastantes coisas feitas, e sim, tudo está sendo feito do 0 e testado com o maior cuidado para tentar ao máximo trazer os sistemas sem nenhum tipo de bug.
O servidor irá contar para já com 13 facções sendo 3 delas facções legais e as restantes ilegais.
SAPD
MECANICA SAMU
MOTOCLUB (desmanche)
LOST MC (desmanche)
THE FAMILIES (armas)
MAFIA (armas)
BAHAMAS (lavagem)
MADELLIN (lavagem)
BRATVA (munição + lockpick)
CARTEL (munição + lockpick)
BALLAS (drogas)
GROOVE (drogas)
Cada facção ilegal tem a sua própria favela mapeada, bem como o hospital é mapeado e a mecanica tem um mapa proprio.
Procuro pessoas interessadas em se juntar no projeto pois atualmente estou sozinho nele, não como programador mas sim como fundador do projeto.
Caso alguém tenha interesse em testar o que ja possui no servidor ou quiser se juntar no projeto entre em contato comigo através deste tópico ou pelo discord - Namish#9420
Discord do servidor: discord.gg/39aUcVH8D8
Deixo abaixo algumas prints relativamente á facção da SAPD
Bom dia, gostaria de comentar, estou com esse problema com esse comando, já tentei reparar mas não consegui. A questão com este comando é que cumpre todas as funções que tem de cumprir, mas infelizmente tem um erro que não consigo ver. Este comando é para vender o seu veículo a outro utilizador. Dou /venderveh ID -9999999 O que faz é , deixa o dinheiro em negativo para mim e o jogador que me enviou o pedido de venda dá 9999999 em positivo. É um exemplo, é o problema que tenho com isso. Isso faz com que a economia do servidor quebre e os usuários encha de dinheiro graças a esse bug, você poderia me ajudar?
Código:
zcmd(venderveh, playerid, params[])
{
if(GetPlayerVehicleID(playerid) == PlayerVehicleInfo[playerid][0][pvID])
{
new idcar = GetPlayerVehicleID(playerid);
if(VehicleOwner[idcar] == playerid)
{
if(!sscanf(params, "ud", params[0],params[1],params[2]))
{
if(IsPlayerConnected(params[0]))
{
if(ProxDetectorS(8.0, playerid, params[0]))
{
if(GetPlayerMoney(params[0]) >= params[1])
{
if(PlayerVehicleInfo[params[0]][0][pvModel] == 0)
{
if(PlayerInfo[params[0]][pLevel] < 2) return Message(playerid, COLOR_GRAD2, "El jugador necesita ser mínimo nivel 2.");
if(SportVehicles(PlayerVehicleInfo[playerid][0][pvModel]))
if(params[2] < 0) return Message(playerid, COLOR_WHITE, "* No puedes hacer esto.");
{
if(PlayerInfo[params[0]][pLevel] < 8) return Message(playerid, COLOR_GRAD2, "El jugador necesita ser mínimo nivel 8 para comprar este vehículo.");
}
SetPVarInt(params[0], "OwnableCarOffer", playerid);
SetPVarInt(params[0], "OwnableCarID", idcar);
SetPVarInt(params[0], "OwnableCarPrice", params[1]);
SetPVarInt(params[0], "Petition_ID", 3);
SetPVarInt(params[0], "Facturing", 1);
new string[128];
format(string, sizeof(string), "Ofreciste a %s tu vehículo por %d$", PlayerName(params[0]), params[1]);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "\t\t-- Compra de Vehículo --\t\t\n\t* %s te ofrece su %s a %d$, ¿acepta?", PlayerName(playerid), GetVehicleFriendlyName(PlayerVehicleInfo[playerid][0][pvID]), params[1]);
SendRequest(params[0], string);
return 1;
} else Message(playerid, COLOR_GRAD2, "El jugador ya tiene un vehículo.");
} else Message(playerid, COLOR_GRAD2, "El jugador no tiene fondos suficientes.");
} else Message(playerid, COLOR_GRAD2, "Jugador muy lejos.");
} else Message(playerid, COLOR_GRAD2, "Jugador desconectado.");
} else Message(playerid, COLOR_GRAD2, "Utilize: /venderveh <PlayerID> <Cantidad>");
} else Message(playerid, COLOR_GRAD2, "No estás en tu auto.");
} else Message(playerid, COLOR_GRAD2, "No estás en tu auto.");
return 1;
}
Bom, um usuário enviou em um tópico o código a seguir que é capaz de desativar armamentos de veículos como rhino, hunter e afins. É possível desativar a água do caminhão de bombeiros e entre outros inserindo o ID no array DetectedModels. Vale ressaltar que é necessário utilizar o Pawn Raknet.
Código:
Código:
/*
Disable Vehicle Fire Sync
AdrianGraber
*/
#define FILTERSCRIPT
#include <a_samp>
#include <Pawn.RakNet>
const VEHICLE_SYNC = 200;
new CallbackTime[MAX_PLAYERS];
static const DetectedModels[] =
{
//Add here ModelIDs of vehicles you want to disallow firing from vehicle
//In this examlpe I will add Hunter, Sea Sparrow and Rhino
//Try not to use this in normal vehicles, as it will prevent nitro syncing
425,
432,
447
};
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Disallow Vehicle Fire Started... ");
print("--------------------------------------\n");
return 1;
}
forward OnPlayerFiresForbiddenVeh(playerid);
public OnPlayerFiresForbiddenVeh(playerid)
{
SendClientMessage(playerid, -1, "You can't fire with this vehicle! Your action will not be synced!"); //Example, better to do this with a Dialog or something to scare the player
return 1;
}
Olá, será que tem como fazer um NPC que dirige um trem sozinho de um determinado local até outro, aí quando o player chega no local final ele sai do trem sozinho
Oi, bom, eu tenho uma pergunta e realmente não sei como fazer, fiquei preso nisso...
Qual é a maneira que um usuário não pode colocar símbolos em um comando? Existe alguma maneira de evitá-lo? Bom, já vi usuários abusando de um bug que está com números negativos. Em outras palavras, digamos que eles coloquem/passem ID de materiais -10000000, isso faz com que o usuário que der o -10000000 seja negativo e o usuário que lançar o comando receba 10000000 mas positivo.
Eu quero proibir isso, como posso fazer isso? Deixo um exemplo.
Código:
zcmd(pasar, playerid, params[])
{
new string[128], item[32];
if(!sscanf(params, "s[32]ui", item, params[1],params[2]))
{
if(!IsPlayerConnected(params[1])) return Message(playerid, COLOR_GRAD2, "¡Jugador no conectado!");
if(!ProxDetectorS(5.0, playerid, params[1])) return Message(playerid, COLOR_GRAD2, "¡Jugador muy lejos!");
if(strcmp(item,"materiales",true) == 0)
{
if(isnumeric(params))return SendClientMessage(playerid, COLOR_GREY, "* No se puede enviar números por este canal.");
if(params[2] > PlayerInfo[playerid][pMats]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de materiales!");
format(string, sizeof(string), "* %s le da materiales a %s.", PlayerName(playerid), PlayerName(params[1]));
ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
PlayerInfo[params[1]][pMats] += params[2];
PlayerInfo[playerid][pMats] -= params[2];
format(string, sizeof(string), "* Has recibido %d materiales. Ahora tienes %d", params[2], PlayerInfo[params[1]][pMats]);
Message(params[1], COLOR_YELLOW, string);
return 1;
}
else if(strcmp(item,"speed",true) == 0)
{
if(params[2] > PlayerInfo[playerid][pSpeed]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de speed!");
format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
PlayerInfo[params[1]][pSpeed] += params[2];
PlayerInfo[playerid][pSpeed] -= params[2];
format(string, sizeof(string), "* Has recibido %d de speed. Ahora tienes %d", params[2], PlayerInfo[params[1]][pSpeed]);
Message(params[1], COLOR_YELLOW, string);
return 1;
}
else if(strcmp(item,"ectasy",true) == 0)
{
if(params[2] > PlayerInfo[playerid][pEctasy]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de ectasy!");
format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
PlayerInfo[params[1]][pEctasy] += params[2];
PlayerInfo[playerid][pEctasy] -= params[2];
format(string, sizeof(string), "* Has recibido %d de ectasy. Ahora tienes %d", params[2], PlayerInfo[params[1]][pEctasy]);
Message(params[1], COLOR_YELLOW, string);
return 1;
}
else if(strcmp(item,"ritalin",true) == 0)
{
if(params[2] > PlayerInfo[playerid][pRitalin]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de ritalin!");
format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
PlayerInfo[params[1]][pRitalin] += params[2];
PlayerInfo[playerid][pRitalin] -= params[2];
format(string, sizeof(string), "* Has recibido %d de ritalin. Ahora tienes %d", params[2], PlayerInfo[params[1]][pRitalin]);
Message(params[1], COLOR_YELLOW, string);
return 1;
}
else if(strcmp(item,"heroina",true) == 0)
{
if(params[2] > PlayerInfo[playerid][pHeroina]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de heroina!");
format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
PlayerInfo[params[1]][pHeroina] += params[2];
PlayerInfo[playerid][pHeroina] -= params[2];
format(string, sizeof(string), "* Has recibido %d de heroina. Ahora tienes %d", params[2], PlayerInfo[params[1]][pHeroina]);
Message(params[1], COLOR_YELLOW, string);
return 1;
}
else if(strcmp(item,"marihuana",true) == 0)
{
if(params[2] > PlayerInfo[playerid][pMarihuana]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de marihuana!");
format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
PlayerInfo[params[1]][pMarihuana] += params[2];
PlayerInfo[playerid][pMarihuana] -= params[2];
format(string, sizeof(string), "* Has recibido %d de marihuana. Ahora tienes %d", params[2], PlayerInfo[params[1]][pMarihuana]);
Message(params[1], COLOR_YELLOW, string);
return 1;
}
} else {
Message(playerid, COLOR_GRAD2, "Utilize: /pasar <Item> <PlayerID> <Cantidad>");
Message(playerid, COLOR_GRAD2, "Items: materiales, drogas, speed, ectasy, ritalin, heroina, marihuana");
}
return 1;
}
Boa noite amigos. Estou a procura de um sistema de Level/Xp por morte. É basicamente assim:
O player que se registrar, começará com o level 1, e pra ele upar, ele vai precisar de 10 de xp. exemplo
dentro do progress bar ficará assim:
0/10
aí quando ele chegar ao level 50, esse 0/10, irá mudar para:
0/20
quando ele chegar ao level 200, esse 0/20 ira mudar para:
0/50
quando ele chegar ao level 800, esse 0/50 irá mudar para:
0/150
quando ele chegar ao level 10000, esse 0/50 irá mudar para:
0/200
aí a cada player que ele irá matar, ele ganhará 10 de exp, aí na progress bar, ficará, exemplo:
se ele estiver no level 200, quando ele matar alguém, na progress bar ficará
10/50
quando ele matar 5 players, ele passará de level. por favor, me ajudem!!!
tinha um topico aqui onde o cara fez isso pra desativar o tiro do hydra no mobile se não me engano então fiz uma procura aqui e não achei alguem sabe como fazer?