Atualmente nosso servidor é RP. Deste geito nossa Dinâmica e pensada na vida real (occ). Aqui vão algumas coisas sobre nosso servidor;
PRESIDENTE
O presidente é responsável por manda em nossa cidade;
Controla inflação,salários,impostos,auxiliar em armazenamento para corporação;
Faz manifestação ou festas de seus agrados;
Pode fazer pacificação ou tomada de território hostil;
Controla bancos,meios de sacagem de dinheiro;
Sua autoridade permite fazer novas "regras" ou "editar regras";
Construção de novos empregos e corporação;
Controla as administração de cidades ( LS LV SF );
Declaração de novas guerras contra países não de seu agrado; (população faz a votação);
Retirada de bens da população ( deve ser feita em casso de insegurança);
VICE-PRESIDENTE
o trabalho do vice prefeito e auxiliar o seu prefeito;
Auxiliar comércios;
Auxiliar impostos,salários,inflação;
Auxiliar bens para comunidades carentes;
Auxiliar armamento para corporação;
Auxiliar festas ou manifestações;
Auxiliar novas "regras";
Auxiliar a Criação de novos empregos;
CORPORAÇÕES
Corporação responsável pela segurança da população;
Faz segurança do presidente e vice;
Ajuda comunidades de bens;
Ajuda pessoas em estados críticos;
Faz eventos para a comunidade;
Faz pacificação ( apenas corp com autorização do PRESIDENTE );
Faz segurança em locais públicos;
ECONOMIA
Colocar o Valor que cada emprego irá pagar para os funcionários;
Controlar o valor dos produtos que irá ser vendido no servidor (Veículos, Mochila etc..)
Consequentemente controlando a Inflação do servidor;
Controla meios de pagamento Online.
Controla meios de consumação de água e energia;
ORGANIZAÇÕES
As organizações estão responsáveis por fazerem ações criminosas pelas cidades de San Andreas (lv,ls,sf) Sem armamento e impossível fazer ação, as armas podem ser obtidas por máfias, apenas elas podem vender armas para a população de San Andreas. Não iremos disponibilizar carros em seus **HQ**, membros de organizações devem possuir no mínimo 1 automóvel para se locomover...
Obs: Casso a organização esteja fazendo muitas ações indevidas o presidente pode ser pronunciar desse geito ele pode escolher entre pacificação ou tomada de território ( favela,HQ,etc...) apenas forças armadas,aeronáutica,comanf,grumec e exército podem efetuar nessa área. (Corporação com autorização do presidente)
MAFIA
Como ela venderá as armas para a população "ilegal" essa "Organização" terá um papel principal de Ir pelo mapa a procura de peças para montar as devidas armas para vender para a população (Para fabricar terá um custo NO IC Dentro do jogo para não vender as amas a preço de banana, mas claro que pode fazer um acordo com alguma org e fazer promoção.)
As armas que serão fabricadas por eles podem ser vendidas em biqueira de mafiosos. (Pode ser encontradas pelo /GPS ou informações da população)
MERCENÁRIO
Os Mercenários estão responsáveis por vendas de drogas na cidade, pode ser revendida por preços mais altos ou baixo, dependendo da demanda dos clientes. Além disso pode ser adquiridos lock pick com eles para revenda. Eles tabem poderão fazer sabotagem no sistema do governo local…
HACKERS
possivelmente tem permissão de sabotagem de hakear sistema do governo. Caixas eletrônicos, bancos e etc. Apenas Corporações investigava poderão assumir casso como esses.
Nosso servidor agradeçe por ler nossa Dinâmica, mais coisas em breve em nosso discord.
Baixei uma gamemode, tudo normal, mais quando eu entro no mercado negro
quando eu entro o interior não carrega, boneco fica flutuando e começa a cair no limbo.
GM BRASIL PLAY STORY,
alguem sabe oque pode ser ? sou meio novato no samp então necessito de alguma respostas dos mais entendedores, onde está o problema.
Rapa, a callback não está CHECANDO CORRETAMENTE a DATA, MES, ANO do script.
Exemplo: Setei o DONATER para o player até 01/12/2022 porém quando player conecta ao servidor, na DATA Correta nada acontece. Não funciona. Se ele conecta na data SETADA seria para resetar tudo.
Testei com DATAS ANTERIORES E POSTERIORES a SETADA e também sem resultados.
Bom, voltei ao mundo SA-MP a pouco tempo, e resolvi voltar a "codar" por hobby.
Me afastei desse mundo a uns 3 anos devido a perda de um GM que comecei a criar do zero em 2015.
Agora em 2022 resolvi mexer em alguns GM's que tinha guardado, e novamente tentar criar outro do zero. Mas venho enfrentando problemas na hora de compilar ambos os GM's(tanto os que peguei pronto, quanto os que eu estou fazendo)
Ambos aparecem dezenas de Warning's, e eu como uma boa pessoa com TOC, não consigo dormir tranquilo com isso.
Olá. Alguém poderia me ajudar(ou me dizer) se é possível sincronizar ou refazer os disparos do Rustler? Para sincronizar eu procurei estudar o pawnraknet, mas não entendi muita coisa sobre ele e, muito menos como reproduzir o que quero optando por essa opção. A segunda opção foi refazer os disparos. Por isso, procurei funções que possibilitasse criar uma linha começando pelo veículo e indo reto da frente do veículo até o final. Por exemplo: se o rustler está inclinado pra cima, a função criaria uma linha que começaria no avião e iria prosseguir em uma direção inclina para cima, na mira do veículo(ou do jogador). Eu optei por essas alternativas, mas não encontrei nenhuma resposta, pois não tenho a mínima ideia de como fazer.
Entao, fiz um sistema simples aqui /virarladrao /virarpm, porem preciso fazer o seguinte, quando um player com a variavel, LADRAO roubar um caixa
ele ira receber uma estrela + Procurado por quem tem a tag POLICIA, So que quem tem a tag policia so ira poder prendero player se ele for procurado
Código:
CMD:virarladrao(playerid, params[])
{
if(Profissao[playerid] == POLICIAL) return SendClientMessage(playerid,-1,"[ <!> ]: Voce ja e de org!");
SendClientMessage(playerid,-1,"[INFO]: Parabens, voce virou Ladrao");
SendClientMessage(playerid,-1,"[INFO]: Para sair de sua profissao use /deixarorg");
Profissao[playerid] = LADRAO; SetPlayerSkin(playerid, 271);
return 1;
}
Código:
CMD:virarpm(playerid, params[])
{
if(Profissao[playerid] == LADRAO) return SendClientMessage(playerid,-1,"[ <!> ]: Voce ja e de org!");
SendClientMessage(playerid,-1,"[INFO]: Parabens, voce virou Policial");
SendClientMessage(playerid,-1,"[INFO]: Para sair de sua profissao use /deixarorg");
Profissao[playerid] = POLICIAL; SetPlayerSkin(playerid, 280);
return 1;
}
Bom, irei deixar um tutorial bem básico, porém pode ser útil para alguém, não sei se já tem algum tutorial ensinando a fazer, mas irei deixar o meu abaixo. O sistema é um Anti-Money (Hack de grana) e um Anti-Hack (Aqueles que tentar usar por exemplo um JetPack dentro do Servidor, esse é bem útil para Servidores RPG).
O sistema nada mais é que uma verificação, começando pelo sistema de Anti-Money.
Primeiramente seu sistema de grana precisa ser armazenado em uma variável (Creio que todos já usam dessa forma).
Mais como assim em uma variável? - Ao invés de usarmos a função nativa do samp ( GivePlayerMoney(playerid, money): ou GetPlayerMoney(playerid)) Iremos usar a variável da sua enum PlayerInfo ( Exemplo de uma - Player[playerid][pDinheiro] ) isso é de acordo com sua enum, mas creio que todos já sabem essa parte.
Tendo esse requisito acima rsrs vamos partir para o sistema.
Vá no seu sistema de spawn, aquele que carrega os dados da sua conta e spawna o jogador no servidor após digitar sua senha corretamente, e crie um SetTimerEx
Uma explicação básica. TimerHack - Nome dado a função que vai ser chamada, quando criarmos a public ela irá se chamar TimerHack ( public TimerHack(playerid) ) 1000 - Isso é o tempo em milissegundos (1 segundo é igual a 1000 em milissegundos), porém irei deixar uma forma mais fácil de fazer isso mais abaixo false - Repetição, false irá chamar a função apenas 1 vez, enquanto true ficará chamando sem parar de 1 em 1 segundo, ou o tempo que você definir.
Ah mais o correto não seria ela ficar repetindo para identificar aquele que tá usando o hack dentro do Servidor? Sim, porém irei ensinar uma forma mais fácil.
Se ao invés de false fosse true, teríamos que criar o SetTimer dentro de uma variável, para quando o jogador saísse do Servidor nos darmos um KillTimer (Finalizar a execução do SetTimerEx).
Como assim criar o SetTimer dentro de uma variável?
Exemplo
Código:
// Topo do gm
new THack[MAX_PLAYERS];
THack[playerid] = SetTimerEx("TimerHack", 1000, false, "i", playerid);
Mais para quer fazer isso? - Para quando o jogador deslogar do Servidor a timer ser encerrada, e a função KillTimer(id) identifica qual timer você quer encerrar através do ID dela, que no caso seria KillTimer(THack[playerid]);
Na primeira opção você a criou para repetir de 1 em 1 segundo sem parar, porém, você criou a mesma dentro de uma variável, e tem a possibilidade de dar um KillTimer quando o jogador desconectar o Servidor
Código:
public OnPlayerDisconnect(playerid, reason)
{
KillTimer(THack[playerid]);
return true;
}
Já na segunda opção você não a criou dentro de uma variável, por isso não poderá encerrar a mesma, e agora ela ficará repetindo mesmo se o jogador deslogar, e quando alguém conectar novamente usando o mesmo id que você estava dentro do Servidor, esse timer vai dobrar e vai ficar sendo chamado 2 vezes em seguida, e assim continuará caso deslogue novamente do Servidor e conecte com o mesmo id, ele vai só duplicando pois está sendo iniciado, porém não está sendo encerrado.
Por isso ao invés de true eu usei false e você já vão entender o porquê
Após ter criado o timer no seu sistema de spawn vamos criar a public onde irá conter nossas funções
Código:
forward TimerHack(playerid);
public TimerHack(playerid)
{
if(!IsPlayerConnected(playerid))
return true;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, Sua variável do dinheiro);
SetTimerEx("TimerHack", 1000, false, "i", playerid);
return true;
}
Oquefizemos? Criamos a public acima com o mesmo nome do timer para ser chamado, e colocamos nosso sistema abaixo
if(!IsPlayerConnected(playerid)); isso checa se o jogador ainda está conectado, aí que está nossa jogada. > ! < no início, significa não conectado, ou seja - Se o jogador não estiver conectado oq acontecerá? e a função resposta digitada abaixo foi return true; - ou seja, se o jogador for igual a desconectado não deixamos executar a função abaixo, que no caso é nosso sistema de anti-money
ResetPlayerMoney - Resetamos o dinheiro dele da função nativa do samp GivePlayerMoney = Setamos o valor correto que ele tem de dinheiro salvo na variavel da grana
Após finalizar o sistema de hack que somente é essas duas funções kkkk vocês viram que eu executei o timer outra vez? Sim, lembra que quando criamos o timer lá em cima no sistema de spawn, definimos a repetição dele como false (Repetir somente uma vez) ou seja, quando o código foi chamado, era pra o timer ter finalizado, mais como eu coloquei o timer novamente no sistema, assim que ele executou o código, ele chamou o timer novamente, e assim tornando um loop, e o !IsPlayerConnected está aí para pôr um fim no loop, pois se a função for chamada e o jogador estiver desconectado do Servidor, ele não deixará executar o código abaixo, e assim evitará o timer ser chamado mais uma vez.
Esse é um macete que uso para timer curtos, não aconselho usar dessa forma em timers grandes, pois 1 segundo como é rápido, dá tempo de ser executado antes de um jogador logar novamente usando o id do jogador anterior, e assim evitar do timer ficar duplicado
Agora vamos para o anti-hack, vou usar um exemplo de hack puxando um JetPack
Na mesma public que criamos para o antimoney
Código:
forward TimerHack(playerid);
public TimerHack(playerid)
{
if(!IsPlayerConnected(playerid))
return true;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, Sua variável do dinheiro);
Oq fizemos? if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) - Aqui checamos se o jogador está usando jetpack ( [b]SPECIAL_ACTION_USEJETPACK significa que sim ) if(VariavelAdmin[playerid] == 0 && VariavelVip[playerid] == 0) - Aqui fizemos uma outra checagem, verificamos se o jogador é VIP ou Admin ( Como vocês podem ver a variavel do Admin e VIP estão com igual == 0 > igual a 0, isso significa que se o jogador não for vip e nem admin o sistema abaixo será executado, que no caso é o BAN, você poderá alterar para KICK ou colocar seu sistema de banimento abaixo
[/b]Ahh, e deixando a forma fácil de definir segundos no settimer