Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2012-01-24, 15:55


BBBay

It's a Programmer






Wiek: 28
Na forum: 5428 dni
Posty: 97
Nick w MP: xBBBay

Piwa: 340

Respekt: 45,3

Witam, mam problem ze skanowaniem pieni?dzy aby unika? dodawania pieni?dzy np przez s0bedita mam taki kod:
Kod:

public ScanikPlayerMoney(playerid){
Loop(i){
if (!IsPlayerAdmin(i) && IsPlayerConnected(i)){
if(GetPlayerMoney(i)-antymc[i]>99){
SetPlayerMoney(i,antymc[i]);
}
return 1;
}
}
return 0;
}

SetTimer("ScanikPlayerMoney", 1000, 1);



Help me, :arrow: :piwo:

Podpis
Launcher + Patcher
http://gtao.pl/inne-launc...4498.htm#597948

Pomogłem? Daj :piwo:
Pomogłeś? Dam :piwo:
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 15:59


G4NG$T4

Pawner






Wiek: 31
Na forum: 6275 dni
Posty: 48
Nick w MP: MickeY

Piwa: 7

Respekt: 45,3

Hmm ja ci polecam lepiej co? takiego http://solidfiles.com/d/tSoY Zamiast GivePlayerMoney(playerid, kwota);
Uzywasz GiveMoney(playerid, kwota
Cytat:

/* Native's - inforumjemy kompilator o istnieniu takich funkcji
native GiveMoney(playerid, money); <- Dzia?anie takie same jakie jak GivePlayerMoney
native SetMoney(playerid, money); <- Ustawia ilo?? pieni?dzy (money) graczowi o id (playerid)
native GetMoney(playerid); <- Dzia?anie takie samo jak GetPlayerMoney
native ResetMoney(playerid); <- Resetuje Pieni?dze gracza (ustawia 0)
native OnMoneyUpdate(playerid); <- Aktualizuje wy?wietlane pieni?dze z warto?ci? PVar'a
*/

// Tutaj s? funkcje nic nie zmieniamy

stock GiveMoney(playerid, money)
return SetPVarInt(playerid, "money", GetPVarInt(playerid, "money") + money) & OnMoneyUpdate(playerid);

stock SetMoney(playerid, money)
return SetPVarInt(playerid, "money", money) & OnMoneyUpdate(playerid);

stock GetMoney(playerid)
return GetPVarInt(playerid, "money");

stock ResetMoney(playerid)
return SetPVarInt(playerid, "money", 0) & OnMoneyUpdate(playerid);

stock OnMoneyUpdate(playerid)
return ResetPlayerMoney(playerid) & GivePlayerMoney(playerid, GetPVarInt(playerid, "money"));

// W tym miejscu podmieniamy Oryginalne funkcje na utworzone przez nas przez co nie musimy nic modyfikowa? w skrypcie

#define GivePlayerMoney GiveMoney
#define SetPlayerMoney SetMoney
#define GetPlayerMoney GetMoney
#define ResetPlayerMoney ResetMoney
. Bardziej funkcjonalniejsze

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 16:08


BBBay

It's a Programmer






Wiek: 28
Na forum: 5428 dni
Posty: 97
Nick w MP: xBBBay

Piwa: 340

Respekt: 45,3

G4NG$T4, a co? w stylu kodu co ja poda?em na g?rze to mo?na jako? to poprawi?? :)
Bo tego co mi poda?e? to nie rozumiem.

Podpis
Launcher + Patcher
http://gtao.pl/inne-launc...4498.htm#597948

Pomogłem? Daj :piwo:
Pomogłeś? Dam :piwo:
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 17:27


CRX







Wiek: 34
Na forum: 5671 dni
Posty: 114

Piwa: 106

Respekt: 51,6

Ostrzeżeń: 60%
Ja Ci polecam to:
Pawn
#define GetPlayerMoney(%1) GetPVarInt(%1,"Money")
#define SetPlayerMoney(%1,%2) SetPVarInt(%1,"Money",GetPVarInt(%1,"Money")+%2);ResetPlayerMoney(%1);GivePlayerMoney(%1,%2)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 20:25


Kelner32.dll







Wiek: 33
Na forum: 5245 dni
Posty: 3
Nick w MP: Kelner32.dll

Piwa: 33

Respekt: 50

Ostrzeżeń: 100%
Witam,
Ten problem mo?na rozwi?za? w bardzo prosty spos?b. Jednak najpierw om?wi? tutaj jak dzia?a dodawanie pieni?dzy za pomoc? s0beita i innych cheat?w oraz jak dzia?aj? funkcj? GivePlayerMoney

1. Pieni?dze gracza domy?lnie s? po stronie klienta (gracza).

2. Domy?lny TextDraw z pieni?dzmi jest to reprezentacja graficzna pami?ci procesu gry, gdzie jest zapisana (binarnie) aktualna ilo?? posiadanych pieni?dzy.

3. s0beit i inne cheaty zmieniaj? tylko i wy??cznie warto?? w/w kom?rki pami?ci gdzie zapisane s? pieni?dze gracza TYLKO po stronie klienta. Po modyfikacji tej warto?ci zmienia si? te? reprezentacja graficzna (textdraw).

4. Funkcja serwera GetPlayerMoney pobiera w?a?nie t? warto?? z pami?ci od gracza, kt?ra mo?e by? ?atwo zmieniona przez r??ne programy do tego przeznaczone.

5. Funkcje GivePlayerMoney i ResetPlayerMoney zmieniaj? tylko warto?? w pami?ci procesu gracza.

6. Skrypt opieraj?cy si? tylko na tych trzech funkcjach jest w 100% podatny na r??nego rodzaju modyfikacje ze strony klienta. Pieni?dze nie s? nigdzie zapisywane po stronie serwera.

Rozwi?zanie:

Wystarczy stworzy? tablic? lub PVara, jak kto woli, gdzie b?dziemy przechowywa? aktualn? ilo?? pieni?dzy ka?dego gracza. Gracz nie b?dzie mia? mo?liwo?ci zmiany tej warto?ci przez wszelakie programy (s0beit itp.)

Uwaga!
Wa?ne jest aby nigy wi?cej nie u?ywa? funkcji GetPlayerMoney do sprawdzania czy gracz ma wystarczaj?c? ilo?? pieni?dzy do zakupu powiedzmy pojazdu. U?ywamy do tego naszej zmiennej tablicowej lub PVara gdzie mamy pewno??, ?e znajduje si? tam prawid?owa warto??.

Przyk?ad:

if (kasa[playerid] < 900) SendClientMessage(playerid, -1, "Masz za ma?o kasy");

gdzie:
kasa - zmienna tablicowa gdzie znajduj? si? pieni?dze graczy.

Przyk?ad deklaracji:
kasa[MAX_PLAYERS];

Uwaga2!
Po ka?dej zmianie warto?ci pieni?dzy zapisanej w tablicy u?ywamy tych dw?ch funkcji w tej kolejno?ci:
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, kasa[playerid]);

Je?li tego nie zrobimy to nie zmodyfikujemy warto?ci kom?rki pami?ci procesu gry docelowego gracza, a co za tym idzie po zakupie pojazdu gracz b?dzie my?la?, ?e mu pieni??k?w nie uby?o.

Przyk?ad poprawnego zastosowania:

if (kasa[playerid] < 900)
SendClientMessage(playerid, -1, "Masz za ma?o kasy");
else
{
SendClientMessage(playerid, -1, "Kupiles to!");
kasa[playerid] -= 900; //odejmujemy pieniadze graczowi
ResetPlayerMoney(playerid); //resetujemy pieniazki
GivePlayerMoney(playerid, kasa[playerid]); //ustawiamy prawidlowa wartosc dla gracza
}

Jak mozna zauwazyc nie uzyta jest tu nigdzie funkcja GetPlayerMoney, wiec jesli gracz zmodyfikuje sobie wartosc pieniedzy nawet na 10000000000000 to i tak nic mu to nie da, poniewa? serwer pobiera warto?? ze swojej zmiennej tablicowej 'kasa', kt?r? stworzyli?my wcze?niej. Po dokonaniu jakiego? zakupu pieni??ki zmalej? graczowi do prawidlowej warto?ci.

Je?li samo takie zabezpieczenie nam nie wystarczy, mo?emy sprawdzac powiedzmy co 1min w Timerze czy kasa[playerid] == GetPlayerMoney(playerid) tzn. czy gracz czasem sobie nie dodal pieniazkow s0beitem lub innym czitem liczac na zyski. W takiej funkcji wywo?ywanej przez Timer je?li warunek kasa[playerid] == GetPlayerMoney(playerid) sie nie spelni mozemy wyrzuci? gracza z serwera lub da? mu ostrze?enie.

Uwaga3!
Wa?ne jest aby po ka?dym wej?ciu na serwer danego gracza ustawia? mu od razu pieni??ki na GivePlayerMoney(playerid, kasa[playerid]). Wa?ne te? jest ?eby przy ka?dej operacji zmiany warto?ci pieni?dzy gracza zmienia? zmienn? kasa[playerid].

To tyle.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 20:31


CRX







Wiek: 34
Na forum: 5671 dni
Posty: 114

Piwa: 106

Respekt: 51,6

Ostrzeżeń: 60%
"Kelner32.dll" napisał/a:

Witam,
Ten problem mo?na rozwi?za? w bardzo prosty spos?b. Jednak najpierw om?wi? tutaj jak dzia?a dodawanie pieni?dzy za pomoc? s0beita i innych cheat?w oraz jak dzia?aj? funkcj? GivePlayerMoney

1. Pieni?dze gracza domy?lnie s? po stronie klienta (gracza).

2. Domy?lny TextDraw z pieni?dzmi jest to reprezentacja graficzna pami?ci procesu gry, gdzie jest zapisana (binarnie) aktualna ilo?? posiadanych pieni?dzy.

3. s0beit i inne cheaty zmieniaj? tylko i wy??cznie warto?? w/w kom?rki pami?ci gdzie zapisane s? pieni?dze gracza TYLKO po stronie klienta. Po modyfikacji tej warto?ci zmienia si? te? reprezentacja graficzna (textdraw).

4. Funkcja serwera GetPlayerMoney pobiera w?a?nie t? warto?? z pami?ci od gracza, kt?ra mo?e by? ?atwo zmieniona przez r??ne programy do tego przeznaczone.

5. Funkcje GivePlayerMoney i ResetPlayerMoney zmieniaj? tylko warto?? w pami?ci procesu gracza.

6. Skrypt opieraj?cy si? tylko na tych trzech funkcjach jest w 100% podatny na r??nego rodzaju modyfikacje ze strony klienta. Pieni?dze nie s? nigdzie zapisywane po stronie serwera.

Rozwi?zanie:

Wystarczy stworzy? tablic? lub PVara, jak kto woli, gdzie b?dziemy przechowywa? aktualn? ilo?? pieni?dzy ka?dego gracza. Gracz nie b?dzie mia? mo?liwo?ci zmiany tej warto?ci przez wszelakie programy (s0beit itp.)

Uwaga!
Wa?ne jest aby nigy wi?cej nie u?ywa? funkcji GetPlayerMoney do sprawdzania czy gracz ma wystarczaj?c? ilo?? pieni?dzy do zakupu powiedzmy pojazdu. U?ywamy do tego naszej zmiennej tablicowej lub PVara gdzie mamy pewno??, ?e znajduje si? tam prawid?owa warto??.

Przyk?ad:

if (kasa[playerid] < 900) SendClientMessage(playerid, -1, "Masz za ma?o kasy");

gdzie:
kasa - zmienna tablicowa gdzie znajduj? si? pieni?dze graczy.

Przyk?ad deklaracji:
kasa[MAX_PLAYERS];

Uwaga2!
Po ka?dej zmianie warto?ci pieni?dzy zapisanej w tablicy u?ywamy tych dw?ch funkcji w tej kolejno?ci:
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, kasa[playerid]);

Je?li tego nie zrobimy to nie zmodyfikujemy warto?ci kom?rki pami?ci procesu gry docelowego gracza, a co za tym idzie po zakupie pojazdu gracz b?dzie my?la?, ?e mu pieni??k?w nie uby?o.

Przyk?ad poprawnego zastosowania:

if (kasa[playerid] < 900)
SendClientMessage(playerid, -1, "Masz za ma?o kasy");
else
{
SendClientMessage(playerid, -1, "Kupiles to!");
kasa[playerid] -= 900; //odejmujemy pieniadze graczowi
ResetPlayerMoney(playerid); //resetujemy pieniazki
GivePlayerMoney(playerid, kasa[playerid]); //ustawiamy prawidlowa wartosc dla gracza
}

Jak mozna zauwazyc nie uzyta jest tu nigdzie funkcja GetPlayerMoney, wiec jesli gracz zmodyfikuje sobie wartosc pieniedzy nawet na 10000000000000 to i tak nic mu to nie da, poniewa? serwer pobiera warto?? ze swojej zmiennej tablicowej 'kasa', kt?r? stworzyli?my wcze?niej. Po dokonaniu jakiego? zakupu pieni??ki zmalej? graczowi do prawidlowej warto?ci.

Je?li samo takie zabezpieczenie nam nie wystarczy, mo?emy sprawdzac powiedzmy co 1min w Timerze czy kasa[playerid] == GetPlayerMoney(playerid) tzn. czy gracz czasem sobie nie dodal pieniazkow s0beitem lub innym czitem liczac na zyski. W takiej funkcji wywo?ywanej przez Timer je?li warunek kasa[playerid] == GetPlayerMoney(playerid) sie nie spelni mozemy wyrzuci? gracza z serwera lub da? mu ostrze?enie.

Uwaga3!
Wa?ne jest aby po ka?dym wej?ciu na serwer danego gracza ustawia? mu od razu pieni??ki na GivePlayerMoney(playerid, kasa[playerid]). Wa?ne te? jest ?eby przy ka?dej operacji zmiany warto?ci pieni?dzy gracza zmienia? zmienn? kasa[playerid].

To tyle.


Nudy, nudy, nudy.
Po co i?? tak? drog?, skoro poda?em mu dobry spos?b? :huh:
(I nie kelner, tylko kernel).

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 20:40


Kelner32.dll







Wiek: 33
Na forum: 5245 dni
Posty: 3
Nick w MP: Kelner32.dll

Piwa: 33

Respekt: 50

Ostrzeżeń: 100%
To jest tylko teoria, jakby kto? chcia? wiedzie? jak to dzia?a. A to ?e nie kelner a kernel to wiem tylko ju? na gmailu by? zaj?ty "Kernel" wi?c zosta? "Kelner" :P . Nie kwestionuje Twojego rozwi?zania.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-24, 20:45


CRX







Wiek: 34
Na forum: 5671 dni
Posty: 114

Piwa: 106

Respekt: 51,6

Ostrzeżeń: 60%
"Kelner32.dll" napisał/a:

To jest tylko teoria, jakby kto? chcia? wiedzie? jak to dzia?a. A to ?e nie kelner a kernel to wiem tylko ju? na gmailu by? zaj?ty "Kernel" wi?c zosta? "Kelner" :P . Nie kwestionuje Twojego rozwi?zania.

Rozpisa?e? si?, a 3/4 u?ytkownik?w tego forum czeka tylko na gotowy kod, aby wklei? go do tzw. "Autorskiego GameMode".
Co do nicku, GMail i GTAOnline, to dwa r??ne ?wiaty. ;P

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-01-25, 10:57


G4NG$T4

Pawner






Wiek: 31
Na forum: 6275 dni
Posty: 48
Nick w MP: MickeY

Piwa: 7

Respekt: 45,3

Ja ci tylko m?wi?em, to s? opisane funkcje opisze o co chodzi
Kod:

GiveMoney(playerid, money); <- Dzia?anie takie same jakie jak GivePlayerMoney
SetMoney(playerid, money); <- Ustawia ilo?? pieni?dzy (money) graczowi o id (playerid)
GetMoney(playerid); <- Dzia?anie takie samo jak GetPlayerMoney
ResetMoney(playerid); <- Resetuje Pieni?dze gracza (ustawia 0)
OnMoneyUpdate(playerid); <- Aktualizuje wy?wietlane pieni?dze z warto?ci? PVar'a
. To s? funkcje tego ,a ?eby to zmieni? potrzebujesz wgra? tylko do folderu plik .inc kt?ry da?em ci download :) Tutaj jeszcze raz dam.
Cytat:

http://solidfiles.com/d/tSoY


Podpis
Postaw piwo autorowi tego posta
 

 
Tagi: skanowanie :: pieniędzy
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » [INNE] Skanowanie pieniędzy Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku