Pulo15 0 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 Zdravím Vás.Takže všimol som si, že veľa uživateľov hľadá na svoj server funkciu proti cheaterom - AntiAirBreak.Prezeral som si fórum a nikde som nenašiel niečo ohľadom pawn kódu pre Vaše módy.Našiel som len zopár rad ako BY sa to dalo spraviť a skúšal som to, ale aj tak to nejako nešlo Takže kus som poblúdil po nete a niekde som našiel teda tu funkciu.Kus som ju poupravil a tak Vám ju dávam sem.Dúfam, že sa Vám to zíjde a že nebudú prípadní cheateri na Vašom serveri machrovať s AirBreakom.Je to z eng SA-MP fóra... Takže poďme na to... Medzi definicíe #define UPDATE_COUNT 5 #define POSSIBLE_AIRBREAK_COUNT_CAR 10 //definícia AirBreak - hráč v aute #define POSSIBLE_AIRBREAK_COUNT_ONFOOT 7 //definícia AirBreak - hráč na nohách Medzi new (premenné) new airbreakcount[MAX_PLAYERS]; new pupdate[MAX_PLAYERS]; //premenná kam budeme zapísovať údaj Do funkcie: public OnPlayerUpdate(playerid) //vložime toto pupdates[playerid]++; if(pupdates[playerid] > UPDATE_COUNT) { pupdates[playerid]=0; new check; if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsVehicleValid(GetPlayerVehicleID(playerid))) //zisti, či je hráč v aute a či je vodič { new Float:vx,Float:vy,Float:vz; //premenna pozície GetVehicleVelocity(GetPlayerVehicleID(playerid),vx,vy,vz); //zistíme rýchlosť a ID auta if(vx==0.0 && vy==0.0 && vz < -0.0032 && vz > -0.022) { check=1; } } else { if(GetPlayerState(playerid)==PLAYER_STATE_ONFOOT) //podmienak, ak je hráč na nohách { new Float:vx,Float:vy,Float:vz,Float:px,Float:py,Float:pz; //premenna pozície GetVehicleVelocity(GetPlayerVehicleID(playerid),vx,vy,vz);// -//- GetPlayerVelocity(playerid,vx,vy,vz); //zistime hráčov "spad" GetPlayerPos(playerid,px,py,pz); //zistí hráčovu pozíciu pupdates[playerid]=0; if(-0.022 < vz < -0.0040 && -0.121 < vx < 0.121 && -0.121 < vy < 0.121 && GetPlayerSurfingVehicleID(playerid)==INVALID_VEHICLE_ID && pz > 2.0) //zistime pohyb vozidla { if(!IsPlayerInRangeOfPoint(playerid,2.0,GetPVarFloat(playerid,"oposx"), //ak je v danom bode GetPVarFloat(playerid,"oposy"),GetPVarFloat(playerid,"oposz")) || -0.5>(GetPVarFloat(playerid,"oposz")-pz)>-0.1 || 0.075>(GetPVarFloat(playerid,"oposz")-pz)>-0.075) { check=2; } SetPVarFloat(playerid,"oposx",px); SetPVarFloat(playerid,"oposy",py); SetPVarFloat(playerid,"oposz",pz); } } } if(check > 0) { new POSSIBLE_AIRBREAK_COUNT; switch(check) { case 1: POSSIBLE_AIRBREAK_COUNT=POSSIBLE_AIRBREAK_COUNT_CAR; case 2: POSSIBLE_AIRBREAK_COUNT=POSSIBLE_AIRBREAK_COUNT_ONFOOT; } airbreakcount[playerid]++; if(airbreakcount[playerid] > POSSIBLE_AIRBREAK_COUNT && IsPlayerInWater(playerid)==0) { airbreakcount[playerid]=0; //sem si dajte co sa stane, ak hracovi zisti AirBreak Kick(playerid); //tu je trebars Kick } } else { airbreakcount[playerid]=0; } } return 1; } Do funkcie: public OnPlayerStateChange(playerid, newstate, oldstate) //vložime airbreakcount[playerid]=0; return 1; } Tak a ešte pár stockov niekam na koniec módu / scriptu: stock IsVehicleValid(id) //ak ma správne vozidlo { new type=GetVehicleModel(id); new blocked[]={ 548, 425, 417, 487, 488, 497, 563, 447, 469, 520 }; for(new i;i { if(type == blocked[i]) { return 0; } } return 1; } stock IsPlayerInArea(playerid, Float:max_x, Float:min_x, Float:max_y, Float:min_y) //ak je hráč v danom okruhu { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1; return 0; } stock IsPlayerInWater(playerid) //ak je hráč vo vode { new Float:x,Float:y,Float:pz; GetPlayerPos(playerid,x,y,pz); if ( (IsPlayerInArea(playerid, 2032.1371, 1841.2656, 1703.1653, 1467.1099) && pz <= 9.0484) //lv piratenschiff || (IsPlayerInArea(playerid, 2109.0725, 2065.8232, 1962.5355, 10.8547) && pz <= 10.0792) //lv visage || (IsPlayerInArea(playerid, -492.5810, -1424.7122, 2836.8284, 2001.8235) && pz <= 41.06) //lv staucamm || (IsPlayerInArea(playerid, -2675.1492, -2762.1792, -413.3973, -514.3894) && pz <= 4.24) //sf südwesten kleiner teich || (IsPlayerInArea(playerid, -453.9256, -825.7167, -1869.9600, -2072.8215) && pz <= 5.72) //sf gammel teich || (IsPlayerInArea(playerid, 1281.0251, 1202.2368, -2346.7451, -2414.4492) && pz <= 9.3145) //ls neben dem airport || (IsPlayerInArea(playerid, 2012.6154, 1928.9028, -1178.6207, -1221.4043) && pz <= 18.45) //ls mitte teich || (IsPlayerInArea(playerid, 2326.4858, 2295.7471, -1400.2797, -1431.1266) && pz <= 22.615) //ls weiter südöstlich || (IsPlayerInArea(playerid, 2550.0454, 2513.7588, 1583.3751, 1553.0753) && pz <= 9.4171) //lv pool östlich || (IsPlayerInArea(playerid, 1102.3634, 1087.3705, -663.1653, -682.5446) && pz <= 112.45) //ls pool nordwestlich || (IsPlayerInArea(playerid, 1287.7906, 1270.4369, -801.3882, -810.0527) && pz <= 87.123) //pool bei maddog's haus oben || (pz < 1.5) ) { return 1; } return 0; } Tak a toto je celá funkcia... testoval som to... Mne osobne to fuguje ako má Link to comment Share on other sites More sharing options...
ATomas 288 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 vypada to dobre a i funkce toto si vymyslel sam ? Link to comment Share on other sites More sharing options...
Marwin37 5 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 Nic jsi nevysvětlil ... lamy nepochopí btw Ta funkce IsPlayerInWater by se mi mohla hodit....... Link to comment Share on other sites More sharing options...
Pulo15 0 Odesláno: 28. Červenec, 2010 Author Share Odesláno: 28. Červenec, 2010 Nie je som to našiel na nete a kus som to poupravil.Čo ti tam na tom treba vysvetľovať ? Link to comment Share on other sites More sharing options...
Marwin37 5 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 me nic ale někteří začatečníci tam něco nemusí chápat.... Link to comment Share on other sites More sharing options...
Pulo15 0 Odesláno: 28. Červenec, 2010 Author Share Odesláno: 28. Červenec, 2010 Tak to hej... no robil som to narychlo lebo som sa ponáhľal tak som to už nestihol popisať, ale ak by nejaký začiatočník nechápal tak môže napísať sem, alebo súkromu správu a mu popíšem... Link to comment Share on other sites More sharing options...
Kuba5 0 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 No nějak nechápu ty definace.. mam error: C:\Documents and Settings\kuba\Desktop\trucking.pwn(503) : error 017: undefined symbol "airbreakcount" a to je tohle.. public OnPlayerStateChange(playerid, newstate, oldstate) { airbreakcount[playerid]=0; return 1; } Link to comment Share on other sites More sharing options...
Konvicka 0 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 new airbreakcount[MAX_PLAYERS]; Link to comment Share on other sites More sharing options...
Kuba5 0 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 new airbreakcount[MAX_PLAYERS]; ale stejně tam jsou pak další erorry, že to nezná.. -- stř 28. črc 2010 17:00:10 -- C:\Documents and Settings\kuba\Desktop\trucking.pwn(1143) : error 017: undefined symbol "GetPVarFloat" C:\Documents and Settings\kuba\Desktop\trucking.pwn(1148) : error 017: undefined symbol "SetPVarFloat" C:\Documents and Settings\kuba\Desktop\trucking.pwn(1149) : error 017: undefined symbol "SetPVarFloat" C:\Documents and Settings\kuba\Desktop\trucking.pwn(1150) : error 017: undefined symbol "SetPVarFloat" tohle už newem asi nepůjde.. -- stř 28. črc 2010 17:08:41 -- Už to jde.. zapoměl jsem.. neměl jsem v modu #include "lol" Link to comment Share on other sites More sharing options...
ATomas 288 Odesláno: 28. Červenec, 2010 Share Odesláno: 28. Červenec, 2010 s tim IsPlayerInVater nebylo by lepsi udelat zonu kdyz nen iv celym SA (tim padek je nekde ve vode mimo mapu) mene podminek = mensi zatez este kdyz to vyvolavas 30x za vterinu.. Link to comment Share on other sites More sharing options...
Pulo15 0 Odesláno: 28. Červenec, 2010 Author Share Odesláno: 28. Červenec, 2010 s tim IsPlayerInVater nebylo by lepsi udelat zonu kdyz nen iv celym SA (tim padek je nekde ve vode mimo mapu) mene podminek = mensi zatez este kdyz to vyvolavas 30x za vterinu.. Mňa sa nepýtaj, ja som to nevymýšľal, ja som to len upravil a otestoval Link to comment Share on other sites More sharing options...
kiwi 0 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 Zkoušel jsem to - nefunguje, piše mi to nějaký error 30, když spustím server Link to comment Share on other sites More sharing options...
Vidie 5 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 No myslím si že jsi to nedělal ale budiž ... 9,5/10 :mozilla: Link to comment Share on other sites More sharing options...
Dennis 0 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 Bl4ck J0k3r":1p751fzx]No myslím si že jsi to nedělal ale budiž ... 9,5/10 :mozilla: -> Mňa sa nepýtaj, ja som to nevymýšľal, ja som to len upravil a otestoval Link to comment Share on other sites More sharing options...
Vidie 5 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 Bl4ck J0k3r":19kvtd5o]No myslím si že jsi to nedělal ale budiž ... 9,5/10 :mozilla: -> Mňa sa nepýtaj, ja som to nevymýšľal, ja som to len upravil a otestoval No jo no myslis si ze ja to ctu? ja jen hodnotím Link to comment Share on other sites More sharing options...
kiwi 0 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 A kevšemu to píše error: error 017: undefined symbol "pupdates" Link to comment Share on other sites More sharing options...
Guest Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 A ku všetkému si lama čo nevie dať hore new pupdate[MAX_PLAYERS]; po česky A kevšemu si lama čo nevie dať hore new pupdate[MAX_PLAYERS]; Link to comment Share on other sites More sharing options...
kiwi 0 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 To není pro mě, já vím proč to nejde... Link to comment Share on other sites More sharing options...
Guest Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 no a že to tam neni ? to si snad vie každý doplniť nie ? Link to comment Share on other sites More sharing options...
kiwi 0 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 Začátčník třeba ne, jo a teď jsem to zkoušel a že by mě to kicklo za AB? Ne.. jakto? Link to comment Share on other sites More sharing options...
Guest Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 tak nech ten skurvený začiatkočník nezačína anti air brk-om Link to comment Share on other sites More sharing options...
Pulo15 0 Odesláno: 29. Červenec, 2010 Author Share Odesláno: 29. Červenec, 2010 Presne QWER má pravdu aktualizoval som to dal som tam hore tu premennú.Začiatočníci aj tak len kopíruju tak čo im tu viac treba ? A ak niečomu nechápu tak nie je zakázane opýtať sa, alebo napísať súkromnú správu nie ? No a tie ERRORY Vaše sú väčšinu tým, že nedávate pozor a zlé skopírujete, alebo vynecháte nejakú premennú a podobne... Vlastne primitívne ERRORY nie nejaká závažna chyba... Kamarát zo skype mi písal, že má samy ERROR no chudák on to robil pre verziu 0.2x tak čo by sme checeli, keď niekto nevie, že má zlú verziu a jeho staré pawno tieto funkcie nepodporuje .... PS: QWER a dík za rady tie pozície a funkcie na danom mieste mi už funguje aj keď som to kus inak spravil ako si mi hovoril, lebo tak mi to nešlo ale na základe TVOJEJ rady som to spravil thx Link to comment Share on other sites More sharing options...
kiwi 0 Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 Ok, teď mi ale vysvětli, proč mi to nejede? Žádné errory ve scriptu a žádné kicky za AB.. Link to comment Share on other sites More sharing options...
Pulo15 0 Odesláno: 29. Červenec, 2010 Author Share Odesláno: 29. Červenec, 2010 A ty odo mňa očakávaš, že som jasnovidec ? Veď predsa som nevidel ten kód ako to máš, ani ten server proste nič.... skús si dať AirBreak a posúvať sa všemožnými spôsobmi (hore,dole, do strán ....) Link to comment Share on other sites More sharing options...
Guest [other]danny Odesláno: 29. Červenec, 2010 Share Odesláno: 29. Červenec, 2010 alebo ukaz jak si to udelal inak dobrý tut 9/10 pre mna ako začiatočníkov Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now