Pozdrav,ovo je moj prvi tutorijal i u njemu cu vam pokazati kako da napravite obicni Anti Money Hack.Pa da pocnemo
1.Moramo definisati 2 variable!Udjite u vas mod i nadjite gdje su vam definisani new i dodajte sledece:
new OldMoney[MAX_PLAYERS];
new NewMoney[MAX_PLAYERS];
2.Sada moramo napraviti funkciju kada igracu dadnete novac da ga ne banuje:Odite na kraj vaseg moda i dodajte:
forward GivePlayerMoneyEx(playerid,ammount);//Forward - this is how you call a new public
public GivePlayerMoneyEx(playerid,ammount)
{
//First the gonna have to set the OldMoney of the player , just in case .
OldMoney[playerid] = GetPlayerMoney(playerid)//Get the money ( GetPlayerMoney ) they put it in the OldMoney var...
//Now we gotta define the new ammount of money the player holds , we gotta do it before we give him the money , so he wont get banned / kicked .
NewMoney[playerid] = ammount;//Putting the ammount in the NewMoney var
//Now we gotta give the player some sweet cash
GivePlayerMoney(playerid,ammount);//default function : )
return 1;
}
3:Provjera novcaMoramo napraviti timer koji ce svakih 2 sekunde provjeravati.Ispod ovog sto ste zadnje dodali,dodajte i ovo:
forward CheckMoney();
public CheckMoney()
{
for(new i = 0; i < MAX_PLAYERS; I++)//This loop will check all players at one time
{
if(IsPlayerConnected(i))//Player is gotta be connected right ?
{
if(GetPlayerMoney(i) > NewMoney[i])//Getting player's money , checking if its more then his NewMoney(means he is hacking)
{
ResetPlayerMoney(i);//We gonna reset his money
GivePlayerMoney(i,OldMoney[i]);//Give him his old money , as a punishment !
Ban(i);//Kick/Ban the poor kid
}
}
}
return 1;
}
4:Namjestanje timera.Pod OnGameModeInIt dodajte:
SetTimer("CheckMoney",2000,true);
5:Zadji korak je podesavanje NewMoney kada se igrac konektuje na server.OnPlayerConnect(playerid)
{
NewMoney[playerid] = GetPlayerMoney(playerid);
return 1;
}
Ako sam nesto pogresno uradio molim vas da me obavsjetite jer sam ono na brzinu uradio.
Orginalna tema: http://forum.sa-mp.com/showthread.php?t=292898
TakoÄ'er si trebao naglasit da ovo neradi sa sprunk machines, pay&spray, ammunation i sl.
.. ali pohvala za trud(prevod).
for(new i = 0; i < MAX_PLAYERS; I++)
ovdje imaš grešku
if(IsPlayerConnected(i))//Player is gotta be connected right ?
i ovo ti netreba..
I nevidim svrhu varijable 'OldMoney' jer se igraÄ banuje zar ne?
Ako koristite ovo u modu gdje postoji spremanje raÄuna(novca) onda ovo pod onplayerconnect zamijenite sa '0' (NewMoney[playerid] = 0;) - nema neki znaÄaj ali može sprijeÄit ban zbog timera..
A postoje ovakva 2 tutorijala tu na forumu tako da ovo i nije baš korisno.
A da umesto ovog
NewMoney[playerid] = ammount;
ne treba
NewMoney[playerid] += ammount;
jer svaki put kad igracu das novac on postavlja newmoney na taj novac primer:
GivePlayerMoneyEx(playerid, 1000);
stavice NewMoney na 1000, a onda kada
GivePlayerMoneyEx(playerid, 1);
stavice NewMoney na 1, a igrac ce imati 1001 dolar i banace ga ?
Mozda gresim al mislim da sam upravu :D
Al sve u svemu pohvala na trudu :)
lijep tut i hvala! :D
Super ;)
Bravo dobar tut!
davidofff javi mi se
hvala hvala...posluzit ce :D