Damage Informer || weapon-config & SKY - Ubacivanje i prilagodjavanje modu
Evo nakon duzeg vremena tutorijal. Naime, dosta sam poruka dobio kako ubaciti damage informer kao na Skill Areni blabla.. Posto im je tesko uci na github i procitati kako se radi, evo ukratko:Prvo vam je potreban weapon-config.inc, SKY Plugin i SKY.inc (click). Kada sve to lepo preuzmete, udjete u .zip fajlove i onda klasican postupak ubacivanja plugina i includa. SKY plugine (dll, so) ubacujete u YourMode -> plugins, dok include YourMode -> pawno -> includes. Onda odete u server.cfg i u liniju gde su vam plugins dodate SKY.dll/so. DLL je za Windows, dok je SO za linux, ako neki ne znaju.
Zatim, kada ste uspesno zavrsili prvi korak, prelazimo na drugi. Otvarate skriptu vasim text editorom (sublime, atom, pawno etc..). Pri samom vrhu skripte, odmah nakon a_samp includa, dodajete:
#include < SKY >
#include < weapon-config >
#if defined _ALS_OnPlayerGiveDamage
#undef OnPlayerGiveDamage
#else
#define _ALS_OnPlayerGiveDamage
#endif
#define OnPlayerGiveDamage NULL_OnPlayerGiveDamage
#if defined NULL_OnPlayerGiveDamage
forward NULL_OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart);
#endif
#if defined _ALS_OnPlayerTakeDamage
#undef OnPlayerTakeDamage
#else
#define _ALS_OnPlayerTakeDamage
#endif
#define OnPlayerTakeDamage NULL_OnPlayerTakeDamage
#if defined NULL_OnPlayerTakeDamage
forward NULL_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
#endif
E, pa cestitam! Sada ste na 60% ubacivanja damage informera. Sada pronadjite OnGameModeInit u vasem modu i pod njega dodajete:
SetVehiclePassengerDamage(true);
SetDisableSyncBugs(true);Nakon ovoga nadjete OnPlayerGiveDamage i OnPlayerTakeDamage u vasoj skripti. Uzmete sadrzaj unutar funkcija i te iste dve funkcije zamenite sa:
public OnPlayerDamage(&playerid, &Float:amount, &issuerid, &weapon, &bodypart) {
return true;
}I sada unutar OnPlayerDamage dodate sadrzaj iz prethodne funkcije i prilagodite svojoj skripti. Ja cu vam dati primer tazovanja:
public OnPlayerDamage(&playerid, &Float:amount, &issuerid, &weapon, &bodypart)
{
//issuerid = meta/target - igrac koga pucate
//playerid = vi/vas id
//amount = kolicina nanete stete/damagea
//weapon = oruzje
//bodypart = deo tela
//< ovde provera da li je igrac policajac >
if(issuerid != INVALID_PLAYER_ID ) //provera da li je meta validan id/konektovana
{
new
Float: positions; //definisemo varijable za pozicije
GetPlayerPos( playerid, positions[ 0 ], positions[ 1 ], positions[ 2 ] ); //uzimamo poziciju igraca koji puca pomocu definisanih varijabli
if( IsPlayerInRangeOfPoint( issuerid, 10.0, positions[ 0 ], positions[ 1 ], positions[ 2 ] ) ) { //proveravamo da li je igrac koji puca u opsegu od 10 metara te mete na koju puca
//ako jeste, onda returna sve sto je unutar provere
//zeljena animacija kada tazujete igraca
//freeze
//poruka
//timer za istek taza
}
}
// kraj
return true;
}Kada prilagodite sve vasoj skripti kako treba, zapocnite compile (trebalo bi biti bez errora/warninga ako ste sve lepo uradili i prilagodili).
Ako ste sve lepo kompajlovali bez ikakvih problema i uspesno pokrenuli dedicated server, cestitam vam! Uspesno ste ubacili damage informer na vas server.
> Vise o ovom includu mozete videti na SA-MP forumu - https://forum.sa-mp.com/showthread.php?t=563387
Na kraju udjete lepo na server i uzivate pucajuci sa vasim prijateljem/ostalim igracima ako ste hostovali server.
Trenutno je 02:55 tako da je vrlo moguce da sam se negde zeznuo u pisanju jer sam umoran, no uzivajte mi 😛


