-
Sziasztok!
Gondolom senki sem szereti ha örök élettel mászkálnak a szerverén, ezért kitaláltam, hogy írok egy kódot ez ellen.
Tehát a lényeg, hiába van örök élete az illetõnek, akkor is megy le az élete.
A kód szabadon átírható, terjeszthetõ.
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
new Float: elet, Float: pancel;
GetPlayerArmour(damagedid, pancel);
GetPlayerHealth(damagedid, elet);
if(pancel == 0) return SetPlayerHealth(damagedid, elet-amount);
return 1;
}
Cheater mentes játékot kívánok mindenkinek!
-
ha lesz idõm tesztelem ! .:D
jó lett am
-
Egész jó, csak egy baj van.. Ha van páncélmellénye, akkor is az életét veszi le.
Ha ezt megoldod, akkor tökéletes.
-
Egész jó, csak egy baj van.. Ha van páncélmellénye, akkor is az életét veszi le.
Ha ezt megoldod, akkor tökéletes.
Ha az életét leviszi nullára, meghal.
-
De ha örök élete van, akkor mit számít ha a meglévõ életpontjaiból levonsz valamennyit?
Tárolni kellene az élet pontjait a játékosoknak, majd annak az értéket állítgatni az OnPlayerGiveDamage alatt, majd az alapján beállítani az életpontjait.
Ez alapján még ki is lehet szûrni, hogy mire vegyen le életet, és mire nem a játékosnak.
-
De ha örök élete van, akkor mit számít ha a meglévõ életpontjaiból levonsz valamennyit?
Tárolni kellene az élet pontjait a játékosoknak, majd annak az értéket állítgatni az OnPlayerGiveDamage alatt, majd az alapján beállítani az életpontjait.
Ez alapján még ki is lehet szûrni, hogy mire vegyen le életet, és mire nem a játékosnak.
Levon annyit, amennyit amúgy is levonna, végül 0-ra kerül és meghal.
Gyors, erõs fegyverrel még akkor is mûködik, ha a játékos életét folyamatosan feltölti egy idõzítõ, de idõzítõs megoldást nem igen használnak a csalások, szerintem.
-
Arra céloztam, hogy ha egy tisztességes, nem csaló játékos valamicske elõnnyel akar indulni, például egy DM szerveren, ami tartalmazza ezt a kódot, akkor semmit nem ér vele, mert hiány csak a páncélját sebeznék, de a kód miatt az életét is ugyanúgy viszik, szoval ez így kicsit unfair szerintem.
Ezért írtam, hogy meg lehetne oldani úgy, hogy elõször a páncélmellényét viszi le a script, mint alap esetben, után pedig az életét.
Egyszerûbben, mivel az örökélet úgyis csak akkor hat, ha nincs páncélja az illetõnek.
new Float:pArmor;
GetPlayerArmour(playerid, pArmor);
if(pArmor == 0.0) {
//te kódod
}
Másik pedig, amit nem értek, hogy ha amount ugye lebegõpontos, és ha lekéred, vagy megváltoztatod a játékos életét, az is lebegõpontos, szoval minek kerekíted floutrounddal.
Építõ Kritika xD
-
Arra céloztam, hogy ha egy tisztességes, nem csaló játékos valamicske elõnnyel akar indulni, például egy DM szerveren, ami tartalmazza ezt a kódot, akkor semmit nem ér vele, mert hiány csak a páncélját sebeznék, de a kód miatt az életét is ugyanúgy viszik, szoval ez így kicsit unfair szerintem.
Ezért írtam, hogy meg lehetne oldani úgy, hogy elõször a páncélmellényét viszi le a script, mint alap esetben, után pedig az életét.
Egyszerûbben, mivel az örökélet úgyis csak akkor hat, ha nincs páncélja az illetõnek.
new Float:pArmor;
GetPlayerArmour(playerid, pArmor);
if(pArmor == 0.0) {
//te kódod
}
Másik pedig, amit nem értek, hogy ha amount ugye lebegõpontos, és ha lekéred, vagy megváltoztatod a játékos életét, az is lebegõpontos, szoval minek kerekíted floutrounddal.
Építõ Kritika xD
Ezért írtam, hogy meg lehetne oldani úgy, hogy elõször a páncélmellényét viszi le a script, mint alap esetben, után pedig az életét.[/quote]
Milyen igazad van, erre nem is gondoltam, bõvítek.
Másik pedig, amit nem értek, hogy ha amount ugye lebegõpontos, és ha lekéred, vagy megváltoztatod a játékos életét, az is lebegõpontos, szoval minek kerekíted floutrounddal.[/quote]
Már nem is tudom, de valamilyen teszteléshez így volt ideális, ezért hagyhattam így.
-
Leírom másképp, úgy látom nem vetted ki a lényeget.
Ha a csalónak 1000000000000 az élet pontja akkor ez a dolog levonja belõle azt amennyivel visszatér az OnPlayerGiveDamage.
Akkor mennyit ér a jelenlegi kódod?
-
Leírom másképp, úgy látom nem vetted ki a lényeget.
Ha a csalónak 1000000000000 az élet pontja akkor ez a dolog levonja belõle azt amennyivel visszatér az OnPlayerGiveDamage.
Akkor mennyit ér a jelenlegi kódod?
if(elet > 100) SetPlayerHealth(damagedid, 100.0 - amount);
-
Nagyon egyszerû a megoldás:
public OnPlayerConnect(playerid)
{
SetPVarFloat(playerid, \"elet\", 100.0);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
DeletePVar(playerid, \"elet\");
return 1;
}
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
new
Float:pancel,
Float:elet = GetPVarFloat(damagedid, \"elet\");
GetPlayerArmour(damagedid, pancel);
if(pancel == 0.0)
{
if((elet - amount) <= 0)
SetPlayerHealth(damagedid, 0);
else
SetPVarFloat(damagedid, \"elet\", elet - amount);
}
return 1;
}
Éppen nem teszteltem.
U.I.: Javítva egy kicsit.
-
Akkor újabb magyarázat:
Ha te beállítod a fenti kóddal az életét 100-ra.
És az OnPlayerGiveDamage alatt levon annyit amennyivel visszatér.
A csaló hackje visszateszi az életpontját újból 100000000000-re, akkor állandóan csak
SetPlayerHealth(damagedid, 100 - amount);
életpontja lesz.
Edit:
DrAkE megoldása már egy kis útmutató lenne. :D
-
Akkor újabb magyarázat:
Ha te beállítod a fenti kóddal az életét 100-ra.
És az OnPlayerGiveDamage alatt levon annyit amennyivel visszatér.
A csaló hackje visszateszi az életpontját újból 100000000000-re, akkor állandóan csak
SetPlayerHealth(damagedid, 100 - amount);
életpontja lesz.
Edit:
DrAkE megoldása már egy kis útmutató lenne. :D
De ha nem teszi vissza, akkor mûködik.
DrAkE kódja jó, de sztem lehetne simán is állítani az életét, mert az is meglátszik, ha visszateszi a cheat.
Furcsa lenne, hogy full az élete a cheat miatt, és firtelen csak ugy meghal :D
-
A csaló hackje visszateszi az életpontját újból 100000000000[/quote]
De ilyet nem szoktak. :D
-
Hirtelen? Épp az a jó, ha hirtelen meghal, nem kellene csalni a szerveren...
Illetve a sobeit automatán rakja vissza az életet...
-
Hirtelen? Épp az a jó, ha hirtelen meghal, nem kellene csalni a szerveren...
Illetve a sobeit automatán rakja vissza az életet...
Mondjuk. Igaz.
Amugy nem nagyon értek a s0beithez. :angel:
-
Hirtelen? Épp az a jó, ha hirtelen meghal, nem kellene csalni a szerveren...
Illetve a sobeit automatán rakja vissza az életet...
Pedig sobeittel tesztelve, nem rakja vissza az életét.
Adminscriptel is teszteltem, ha 1 másodpercenként visszaállítja a játékos életét 10000-re, még akkor is le lehet lõni gyorsabb fegyverrel.
-
Furcsa lenne, hogy full az élete a cheat miatt, és firtelen csak ugy meghal :D
Az meg idegesítõ hogy lövi az ember azt baszik megdögleni. Inkább legyen fura. :D:D
-
De ha örök élete van, akkor mit számít ha a meglévõ életpontjaiból levonsz valamennyit?
Tárolni kellene az élet pontjait a játékosoknak, majd annak az értéket állítgatni az OnPlayerGiveDamage alatt, majd az alapján beállítani az életpontjait.
Ez alapján még ki is lehet szûrni, hogy mire vegyen le életet, és mire nem a játékosnak.
Levon annyit, amennyit amúgy is levonna, végül 0-ra kerül és meghal.
Gyors, erõs fegyverrel még akkor is mûködik, ha a játékos életét folyamatosan feltölti egy idõzítõ, de idõzítõs megoldást nem igen használnak a csalások, szerintem.
[/quote]
De ha 99999999999999999999999999-ra állítod az életét, vonhatsz belõle 10-eket...
-
megy a + ! Jólett :)
-
S0beitnél így mûködik örök élet:
100-ra állítja mindig az életét az embernek ha be van kapcsolva.
Én úgy csináltam az anticheatemben, hogy mikor vki givez damaget valakinek, megnézi hogy lement-e az élete, ha nem akkor kickeli.Ennyi, és bevált, kipróbáltuk sobeittel is:D
-
ez jól jött a szeróba......