Szerző Téma: Örök élet elleni "védelem"  (Megtekintve 2319 alkalommal)

Nem elérhető CANNONN

  • 2139
    • Profil megtekintése
Örök élet elleni "védelem"
« Dátum: 2012. június 24. - 17:34:13 »
+4 Show voters
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!
« Utoljára szerkesztve: 2012. október 21. - 09:59:29 írta Cannonn »

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #1 Dátum: 2012. június 24. - 17:36:25 »
0 Show voters
ha lesz idõm tesztelem ! .:D
jó lett am

Örök élet elleni "védelem"
« Válasz #2 Dátum: 2012. június 24. - 17:40:09 »
0 Show voters
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.

Nem elérhető CANNONN

  • 2139
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #3 Dátum: 2012. június 24. - 17:49:22 »
0 Show voters
Idézetet írta: TengeriMalac date=1340552409\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23298\" data-ipsquote-contentclass=\"forums_Topic
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.

Örök élet elleni "védelem"
« Válasz #4 Dátum: 2012. június 24. - 17:55:57 »
0 Show voters
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.

Nem elérhető CANNONN

  • 2139
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #5 Dátum: 2012. június 24. - 17:59:54 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1340553357\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23298\" data-ipsquote-contentclass=\"forums_Topic
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.
« Utoljára szerkesztve: 2012. június 24. - 18:15:37 írta Cannonn »

Örök élet elleni "védelem"
« Válasz #6 Dátum: 2012. június 24. - 21:27:22 »
+1 Show voters
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

Nem elérhető CANNONN

  • 2139
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #7 Dátum: 2012. június 24. - 21:41:49 »
0 Show voters
Idézetet írta: TengeriMalac date=1340566042\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23298\" data-ipsquote-contentclass=\"forums_Topic
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.

Örök élet elleni "védelem"
« Válasz #8 Dátum: 2012. június 25. - 08:59:06 »
0 Show voters
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?

Örök élet elleni "védelem"
« Válasz #9 Dátum: 2012. június 25. - 09:03:58 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1340607546\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23298\" data-ipsquote-contentclass=\"forums_Topic
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);
« Utoljára szerkesztve: 2012. június 25. - 09:08:25 írta TengeriMalac »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #10 Dátum: 2012. június 25. - 09:08:49 »
0 Show voters
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.
« Utoljára szerkesztve: 2012. június 25. - 09:13:43 írta DrAkE »

Örök élet elleni "védelem"
« Válasz #11 Dátum: 2012. június 25. - 09:10:19 »
0 Show voters
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
« Utoljára szerkesztve: 2012. június 25. - 09:12:47 írta ɐʞzssǝlosz »

Örök élet elleni "védelem"
« Válasz #12 Dátum: 2012. június 25. - 09:19:32 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1340608219\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23298\" data-ipsquote-contentclass=\"forums_Topic
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

Nem elérhető CANNONN

  • 2139
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #13 Dátum: 2012. június 25. - 09:37:13 »
0 Show voters
A csaló hackje visszateszi az életpontját újból 100000000000[/quote]
De ilyet nem szoktak. :D

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Örök élet elleni "védelem"
« Válasz #14 Dátum: 2012. június 25. - 09:37:54 »
0 Show voters
Hirtelen? Épp az a jó, ha hirtelen meghal, nem kellene csalni a szerveren...
Illetve a sobeit automatán rakja vissza az életet...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal