Bom fiz um sistema de Fome, Sede e Sono como o titulo mesmo já diz.Bom ele não está funcionando corretamente como deve ser, quando o players spawn as barrinhas aparecem vazias, mais elas dps de um tempo vai enchendo o que pode ser?
Eu uso dynamic object, tenho apenas 10 create object e os objetos e os 3d text estão sumindo depois de uns 2-3 minutos, por exemplo se eu crio 5 barricadas fica só 2, alguem sabe oq pode ser?? :|
Os ataques DoS/DDoS tem vindo a aumentar bastante nos últimos meses, e com isso é preciso implementar medidas para evitar que seu servidor seja atacado. Se você é daqueles caras que prefere ter um servidor hospedado no seu computador para evitar gastar dinheiro e está aguardando algum milagre, então já pode fechar este tutorial. Não há nenhuma forma de evitar um ataque DDoS a 100% e muito menos num servidor online cujo o protocolo é 17 (UDP), o que podemos fazer é implementar medidas para reduzir a probalidade disto acontecer.
Ingredientes:
⦁ Virtual Private Server (VPS) Linux. ⦁ Cérebro.
Procedimentos:
Em primeiro lugar devemos proteger a máquina de ataques RANDOM que são feitos através de portas aleatórias que estejam abertas, é muito frequente atacarem a porta 22. Este tipo de ataque atualmente é muito perigoso, principalmente nos servidores da OVH, em que a proteção dos servidores dedicados em Layer 4 é quase perfeita, mas quando se trata de VPS a história é outra, há vários metódos RANDOM que fazem bypass aos planos básicos da OVH.
Solução:
Configuramos algumas regras no iptables para permitir somente o seu IP a estabelecer uma conexão à porta 22.
PHP Code:
Código:
iptables -F
iptables -A INPUT -s SEUIP -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Em "SEUIP" deve modificar pelo seu IP público, se você não sabe o seu IP pode verificar-lo neste site.
Se utilizar um servidor mysql, deverá fazer o mesmo procedimento para a porta 3306.
PHP Code:
Código:
iptables -A INPUT -s SEUIP -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Se você utilizar alguma conexão remota para o mysql, por exemplo, um UCP terá de permitir o IP da máquina em que está hospedado o mesmo.
Em segundo temos de proteger contra os ataques ICMP que já são velhos mas continuam a funcionar e bastantes empresas Hosting continuam vulneráveis. Este tipo de ataque são os mais perturbadores, na minha opinião. Eu já explorei esta vulnerabilidade muito a fundo, desenvolvi um script em línguagem C em que mandava milhares de requisições a um servidor e o mesmo deixava de responder. Vou deixar abaixo um metódo de proteção.
PHP Code:
Código:
iptables -A INPUT -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkttype broadcast -j DROP
iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT
iptables -A INPUT -p ICMP -f -j DROP
Em terceiro, há os ataques UDP Flood que a maioria das empresas de hospedagem games oferece uma mitigação. Vou deixar abaixo algumas regras.
PHP Code:
Código:
iptables -N UDP-FLOOD
iptables -A INPUT -p udp --dport 7777 -m ttl --ttl-eq=128 -j UDP-FLOOD
iptables -A UDP-FLOOD -p udp --dport 7777 -m length --length 17:604 -j DROP
Quarto e terminando, não façam igual muitas pessoas que estou vendo... Muitos colocam o servidor e o UCP na mesma máquina, isso é um erro extremo. Ao fazerem isto, a probalidade de receberem ataques triplica e não é recomendável ter um servidor web e game na mesma máquina.
Há outros métodos para derrubar um servidor, tal como exploits e também falhas nos gamemodes. Este tutorial o foco é somente DoS e DDoS, para as outras formas farei um tutorial diferente.
eae galera tava fazendo um sistema para o carro não explodir e basicamente fiz a função assim:
public OnVehicleDamageStatusUpdate(vehicleid, playerid) {
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid), health);
if(health < 20 && health > 15){
SetVehicleHealth(GetPlayerVehicleID(playerid), 301);
MOTORCAR[playerid] = 1;
SetVehicleParamsEx(vehicleid, MOTORCAR[playerid], LUZESCAR[playerid], ALARMECAR[playerid], PORTASCAR[playerid], 0, 0, 0);
SendClientMessage(playerid, Vermelho, "* O motor do seu veiculo quebrou, chame um mecânico (/servico mecanico) !");
GameTextForPlayer(playerid, "Motor Quebrou!", 5000, 1);
}
return 1;
}
porem quando o carro toma um dano alto ele começa a pegar fogo porem ele ainda continua funcionando ai quando dou outro dano nele (mesmo pegando fogo) o codigo acima funciona.
alguem sabe como resolvo isso para quando o carro levar um dano alto ele so fique fumaçando e nao pegue fogo e exploda?
Alguém sabe como é possível os players usar uma minigun e matar usando o soco?? Eu tenho um anti Cheat, pega na maioria dos hack, mas por algum motivo, tem um hack que não tá pegando e os cara consegue puxar arma e não leva kick, a minigun aparece na mão dele, e mata por soco e o anti Cheat n Kika
Eu estou tendo um bug na hora de carregar os carros dos players e bem.. não sei o que fazer no primeiro caso eu destruo o veículo sempre que ele loga/desloga, só que por algum motivo os veículos ficam com 2 donos por exemplo, meu carro é um Sultan, tem um player que está logado e tem um fcr, quando eu entro a minha moto fica a fcr, e não dá spawn no sultan, o estranho é que no /ver os dois tem o mesmo ID de veículo, mas como o id pode se repetir ? :|
No outro caso eu coloquei if(PlayerInfo[playerid][ChaveCarro] > 0 Destroy...
So que nesse caso os veículos ficam se multiplicando, na maior parte é pro povo do Android
Alguém pode me ajudar ? Se for necessário mando. O código
Desde o ínicio de meu servidor já existiam lojas como o Burgershot, Cluckin' Bell, etc... Recentemente resolvi criá-las em novas locações e com diferentes mundos virtuais(Para que um player que entrou no Burgershot de San Fierro, não se encontrasse, por exemplo, com o de Los Santos).
Aí está o problema. Os atores, apesar de serem criados com a streamer e setados para o Virtual -1, só aparecem no Virtual 0. Qualquer VW diferente de 0, eles não são mostrados. Alguém tem uma sugestão para tornar um ator global nos VW's?