Sziasztok!
Ezt a scriptet tegnap publikálták hiv. fórumon, és szerintem sok ember hasznosnak találja majd.
Sok fordítani-való nem volt rajta, csak a mûködési elve, de az is hasznos lehet.
A Script eredeti neve \"Fair Fight illetve \"Anti 2v1 3v1 etc...\"
Lényegében ez a kis apróság megakadályozza, hogy 2v1 vagy 3v1 (vagy 50v1...) csaták alakuljanak ki.
Gyengébbek kedvéért a másik oldalról: Csak 1v1 harcok lehetnek.
Ha már harcolsz valakivel, és egy másik emberke megtámad, akkor nem fog sebezni téged, illetve rögtön stoppolja a támadását egy üzenettel, hogy téged már megtámadott xy.
Eredeti készítõ: Gryphus One
Eredeti téma:
Klikk Magyarra fordította: Olie
Magyar szkript letöltése:
http://www.solidfiles.com/d/8ed843963f/
#if defined Credits
________________________________________________________________________-
Eredeti készítõ: Gryphus One
Eredeti téma: forum.sa-mp.com/showthread.php?t=380551
Magyarra fordította: Olie
Kérlek a Credits mezõt ne távolítsd el!
________________________________________________________________________-
#endif
#include <a_samp>
#define TIMEBETWEENATTACKS 20
// Ha egy játékos megtámadta, ennyi idõnek kell eltelnie, hogy egy másik megtámadhassa. (Másodperc)
new LastAttacker[MAX_PLAYERS];
new TimeOfLastAttack[MAX_PLAYERS];
forward PlayerIsNotAttacking(playerid);
// A Játékos nem lesz megjelölve, mint az utolsó támadója bármelyik játékosnak.
public PlayerIsNotAttacking(playerid)
{
new count;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(LastAttacker == playerid)
{
LastAttacker = INVALID_PLAYER_ID;
count++;
}
}
return count;
}
forward CheckIfDifferentAttacker(victim, attacker);
public CheckIfDifferentAttacker(victim, attacker)
{
if( (attacker != INVALID_PLAYER_ID) && (attacker != victim) )
// Az áldozat minden bizonnyal meg lett támadva egy másik játékos által
{
if( (attacker != LastAttacker[victim]) && (LastAttacker[victim] != INVALID_PLAYER_ID) && (LastAttacker[victim] != victim) )
// A Jelenlegi támadó nem az elõzõ támadó
{
if( (GetTickCount() - TimeOfLastAttack[victim]) < (TIMEBETWEENATTACKS * 1000) )
// Nem telt el elég idõ
{
if( IsPlayerStreamedIn(LastAttacker[victim], victim) )
{
return 1;
}
}
}
TimeOfLastAttack[victim] = GetTickCount();
LastAttacker[victim] = attacker;
}
return 0;
}
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\"Fair Harc Filterscript\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnPlayerConnect(playerid)
{
PlayerIsNotAttacking(playerid);
LastAttacker[playerid] = INVALID_PLAYER_ID;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerIsNotAttacking(playerid);
// Ha a játékos megtámadja az áldozatot, és az áldozat meghal, akkod
// egy másik játékos megtámadhatja, hiszen az elõzõ csatának vége.
return 1;
}
public OnPlayerSpawn(playerid)
{
LastAttacker[playerid] = INVALID_PLAYER_ID;
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if(CheckIfDifferentAttacker(playerid, issuerid) == 1)
{
new Float:health, Float:armour;
GetPlayerHealth(playerid, health);
GetPlayerArmour(playerid, armour);
// Ezzel lekérem az életét, és a kevlárját MIELÕTT sebzést szenvedne el.
SetPlayerHealth(playerid, health);
SetPlayerArmour(playerid, armour);
// És most visszaadom amit elszenvedett, így a sebzés, amit rámértek 0.
SetPlayerArmedWeapon(issuerid, 0);
// Ezzel lestoppolom a fegyveres ember támadását.
new victimname[MAX_PLAYER_NAME + 1], attackername[MAX_PLAYER_NAME + 1], string[128];
GetPlayerName( playerid, victimname, sizeof(victimname) );
GetPlayerName( LastAttacker[playerid], attackername, sizeof(attackername) );
format(string, sizeof(string), \"~r~Nem bánthatod %s-t Mert õt más %s megtámadta!\", victimname, attackername);
GameTextForPlayer(issuerid, string, 2000, 4);
}
return 1;
}