Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Allen.exe?! - zdjęcie

Allen.exe?!

Rejestracja: 11.12.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 08.05.2014 16:48
-----

#293791 Nowy Wygląd HUD

Napisane przez Misiaczek ;c w 08.09.2011 14:53

Witam :)

Jako iż mi się nudzi :D postanowiłem zmienić wygląd HUD w swoim bf2 ;](podpatrzone z coda) efekt jest fajny i miły dla oka :D

nowy HUD wygląda tak:
Dołączona grafika


Instrukcja dla 1.0.7 / 1.1.0

bf2rank.sma
Szukamy
#if defined KOLOROWY_SAY
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
#else
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;
#endif


dodajemy pod tym to
new gHUD;
//Task
#define TASK_HUD 9897


aby wyglądało to tak
#if defined KOLOROWY_SAY
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
#else
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;
#endif
new gHUD;
//Task
#define TASK_HUD 9897


następnie szukamy
  
#if defined KOLOROWY_SAY
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
#else
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");
#endif.


dodajemy pod tym to
gHUD = CreateHudSyncObj();

aby to wyglądało tak
  
#if defined KOLOROWY_SAY
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
#else
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");
#endif
gHUD = CreateHudSyncObj();


Szukamy dalej
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");


Zastepujemy to tym
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");
RegisterHam(Ham_Killed, "player", "Ham_Death_Player", 1);


Zapisujemy Plik ;)

ham.inl

Szukamy
  
set_task(0.1, "DisplayHUD", id);


Zastepujemy to tym

if(!task_exists(id+TASK_HUD))
{
set_task(0.1, "DisplayHUD", id+TASK_HUD, _, _, "b");
}


Szukamy
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}


Zastepujemy to tym
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}

public Ham_Death_Player(id)
{
if(!is_user_connected(id))
return HAM_IGNORED;

RemoveHUD(id)

return HAM_IGNORED;
}


Zapisujemy Plik :P

forwards.inl

Szukamy
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

if (!get_pcvar_num(gPcvarWymus))
{
client_cmd(id,"hud_centerid 0");
client_cmd(id,"cl_shadows 0");
set_task(20.0, "Announcement", id);
}
else
{
set_task(20.0, "Announcement", id);
}
}


Zamieniamy na to
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

if (!get_pcvar_num(gPcvarWymus))
{
client_cmd(id,"hud_centerid 0");
client_cmd(id,"cl_shadows 0");
set_task(20.0, "Announcement", id);
}
else
{
set_task(20.0, "Announcement", id);
}

RemoveHUD(id);
}


Szukamy
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
}


Zamieniamy na to
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
RemoveHUD(id);
}


Zapisujemy Plik :P

hud.inl

Szukamy
public DisplayHUD(id)
{
if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) ) return;
if ( !is_user_alive(id) || is_user_bot(id) ) return;

static HUD[64];

if ( !gStatsLoaded[id] )
{
formatex(HUD, charsmax(HUD), "[BF2] Wczytuje Dane...");
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20, 21: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Ranga: %s", totalkills[id], nextrankxp, gRankName[rank]);
}
else
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Odznaki: %d Ranga: %s", totalkills[id], nextrankxp, numofbadges[id], gRankName[rank]);
}
}

message_begin(MSG_ONE_UNRELIABLE, gmsgStatusText, _, id);
write_byte(0);
write_string(HUD);
message_end();
}


Zamieniamy na to
public DisplayHUD(id)
{
id -= TASK_HUD;

if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) )
return;
if ( !is_user_alive(id) || is_user_bot(id) )
return;

if(!is_user_connected(id))
{
remove_task(id+TASK_HUD);
return;
}

set_hudmessage(227, 96, 8, 0.05, 0.15, 0, 0.0, 0.3, 0.0, 0.0, 3)
if ( !gStatsLoaded[id] )
{
ShowSyncHudMsg(id, gHUD,"[%s] Wczytuje Dane...", gPluginName)
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20, 21: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nZabicia: %d/%d", gPluginName, gRankName[rank], totalkills[id], nextrankxp)
}
else
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nIlosc Odznak: %d^nZabicia: %d/%d", gPluginName, gRankName[rank], numofbadges[id], totalkills[id], nextrankxp)
}
}
}

public RemoveHUD(id)
{
remove_task(id+TASK_HUD);
}


Zapisujemy Plik :P

i kompilujemy teraz sma bf2 ;)

Instrukcja dla 1.5.3 / 1.5.5

bf2rank.sma
Szukamy
//Message sending variables
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;


dodajemy pod tym to
new gHUD;
//Task
#define TASK_HUD 9897


aby wyglądało to tak
//Message sending variables
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;
new gHUD;
//Task
#define TASK_HUD 9897


następnie szukamy
    //Message sending.
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");


dodajemy pod tym to
gHUD = CreateHudSyncObj();

aby to wyglądało tak
    //Message sending.
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");
gHUD = CreateHudSyncObj();


Szukamy dalej
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");


Zastepujemy to tym
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");
RegisterHam(Ham_Killed, "player", "Ham_Death_Player", 1);


Zapisujemy Plik ;)

ham.inl

Szukamy
  
set_task(0.1, "DisplayHUD", id);


Zastepujemy to tym

if(!task_exists(id+TASK_HUD))
{
set_task(0.1, "DisplayHUD", id+TASK_HUD, _, _, "b");
}


Szukamy
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}


Zastepujemy to tym
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}

public Ham_Death_Player(id)
{
if(!is_user_connected(id))
return HAM_IGNORED;

RemoveHUD(id)

return HAM_IGNORED;
}


Zapisujemy Plik :P

forwards.inl

Szukamy
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

set_task(20.0, "Announcement", id);
}


Zamieniamy na to
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

set_task(20.0, "Announcement", id);
RemoveHUD(id);
}


Szukamy
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
}


Zamieniamy na to
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
RemoveHUD(id);
}


Zapisujemy Plik :P

hud.inl

Szukamy
public DisplayHUD(id)
{
if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) ) return;
if ( !is_user_alive(id) || is_user_bot(id) ) return;

static HUD[64];

if ( !gStatsLoaded[id] )
{
formatex(HUD, charsmax(HUD), "[BF2] Wczytuje Dane...");
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Ranga: %s", totalkills[id], nextrankxp, gRankName[rank]);
}
else
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Odznaki: %d Ranga: %s", totalkills[id], nextrankxp, numofbadges[id], gRankName[rank]);
}
}

message_begin(MSG_ONE_UNRELIABLE, gmsgStatusText, _, id);
write_byte(0);
write_string(HUD);
message_end();
}


Zamieniamy na to
public DisplayHUD(id)
{
id -= TASK_HUD;

if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) )
return;
if ( !is_user_alive(id) || is_user_bot(id) )
return;

if(!is_user_connected(id))
{
remove_task(id+TASK_HUD);
return;
}

set_hudmessage(227, 96, 8, 0.05, 0.15, 0, 0.0, 0.3, 0.0, 0.0, 3)
if ( !gStatsLoaded[id] )
{
ShowSyncHudMsg(id, gHUD,"[%s] Wczytuje Dane...", gPluginName)
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20, 21: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nZabicia: %d/%d", gPluginName, gRankName[rank], totalkills[id], nextrankxp)
}
else
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nIlosc Odznak: %d^nZabicia: %d/%d", gPluginName, gRankName[rank], numofbadges[id], totalkills[id], nextrankxp)
}
}
}

public RemoveHUD(id)
{
remove_task(id+TASK_HUD);
}


Zapisujemy Plik :P

i kompilujemy teraz sma bf2 ;)
  • +
  • -
  • 31


#490947 CoD MoD by G!V3R@ [Mega] :)

Napisane przez givera12 w 16.12.2012 17:16

callofdutye.png
Gdyby brakowało modeli itp, proszę pisać na dole.
Ja tego Cod Mod'a mam na swoim serwerze i gwarantuję wszystkim że
nie ma na nim ani crashy, ani errorów.


testyq.png

KLASY:

"Admiral [VIP]"
Ma podwojny skok, za kazde zabojstwo dostaje 20 hp, 5xp, oraz pelen magazynak .

"Zawodowy Deagler [VIP]"
Dostaje Deagle z Zoom'em 1/5 z DEAGLE, posiada lekka grawitacje, Podwojny skok.

"General Broni [VIP]"
Ma Dual Kriss i Dual Deagle oraz wieksze DMG z nich.

"Snajper"
150 procent obrazen z AWP(+inteligencja), 1/3 szansy na natychmiastowe zabicie z noza(PPM).

"Oficer Brygady"
Klasa wybucha po smierci zadajac 90(+intelgencja) obrazen.

"Komandos"
Natychmiastowe zabicie z noza(PPM).

"Sokoli Komandor"
Ma latarke dzięki, ktorej moze naswietlic niewidzialnych.

"Strzelec Wyborowy"
DMG +5 (+inteligencja).

"Wyszkolony Kapral"
Ma 1 sekunde niesmiertelnosci. Zlote AK47 ,z niej + 5 Dmg.

"Obronca"
Widzi miny.

"Falszywy General"
Posiada dwie falszywe paki, ktore po wejsciu wroga wybuchaja i zadaja 80 dmg(+int).

"Medyk"
Posiada dwie apteczki.

"Anty Medyk"
Posiada dwie trutki [E], ktore dzialaja jak Apteczki lecz w odwrotna strone.

"Wsparcie Ogniowe"
Posiada dwie rakiety.

"Wsparcie Bombowe"
Posiada MP5 i granatnik do niego ktorym mozemy stawiac bomby. (PPM) Detonacja USE.

"Saper"
Posiada 3 miny.

"Wytrenowany Zolnierz"
Posiada eliminator rozrzutu.

"Zawodowy Szpieg"
z M4 jest ubany na Ct a z AK47 na Terro.

"Powstaniec"
Ma 2 sekundy niesmiertelnosci co runde, dodatkowe 10 procent obrazen z mac10.

"Rusher"
Nie slychac go jak Biega.

"Czolgista"
Dostaje Bazuke za GALIL



PERKÓW NIE BĘDĘ OPISYWAŁ, ALE JEST ICH 55
MAX LVL 301 (MOŻNA ZMIENIĆ W CODMOD.CFG


Dodatkowo w moim Modzie znajduje się:

Death Streak (komenda /dh)
Menu Admina (komenda /codadmin)
Wymiana Perkami (komenda /wymien)
Sprzedaż perków zamiast ich wyrzucanie (komenda /drop)
Paczki które wypadają z graczy po ich zabiciu (drop: exp, kasa, hp, itp)
Vip który ma (+10 w staty, hp za kill, exp za kill, exp za hs, klasy premium)
prefixy w say (czyli np: [Snajper: 15lvl] G!V3R@ say.)
Exp za 1 miejsce, 2 miejsce, 3 miejsce pod koniec mapy.
Dobrowolne oddanie perku (komenda /daj)
sklep (komenda /sklep)

EVENTY:
3x wiecej expa za 20DMG na 300 sekund (komenda /eventdmg)
3x wiecej expa za Wygrana Rundę na 400 sekund (komenda /eventwin)
3x wiecej expa za Kill'a na 300 sekund (komenda /eventkill)

wygląd:

eventek.png

Exp za wszystko. (czyli za: win, bomba, hs, rozbrojenie, ochrona celu, itd.)
KillStreak (komenda /ks)


oraz:

Inne dodawanie Statystyk
statystyki klasy (komenda /staty)
Zapis SQL

Balans Lvl

(czyli: gdy na serwerze jest gracz z 80 lvl to gracz z 1 lvl po wejsciu na serwer będzie awansował na 8 lvl
inny wygląd HUD


Gdy żyjesz:


fgdgf.png

Gdy obserwujemy:


hud2.png

I Co najważniejsze, Nie miga HUD!!!

plugins-codmod.ini wygląda tak:

Spoiler

a plugins.ini wygląda tak:

Spoiler


Reszty dowiecie się na serwerze.


testyi.png

 

 

download
 

Załączone pliki


  • +
  • -
  • 34


#487930 Diablo Mod Core 1.1.0 PL

Napisane przez DarkGL w 07.12.2012 20:22

Diablo Mod Core 1.1.0 PL by DarkGL

Diablo Mod Core jest całkowicie nowym silnikiem Diablo Mod'a napisanym przezemnie jakiś czas temu ( dawno ^^ )

Dzięki zastosowaniu Forwardów i Natywów uzyskujemy łatwą możliwość rozbudowy moda bez zmian w głównym silnikiem
co przekłada się na możliwość łatwiejszej rozbudowy naszego serwera ( klas , itemów itp. )

Posiada on w sobie funkcje które nie są zaimplementowane w oryginalnej wersji diablomoda a które po prostu muszą być na serwerze DiabloMod

Co możemy znaleźć w silniku
  • Klasy i itemy to odzielne pluginy
  • System zarządzania renderem gracza
  • Nowy system zapisu sql
  • Dynamiczny zapis sql ( klasy mogą być dowolnie dodawane i usuwane )
  • Wbudowane anty kopiowanie leveli
  • Możliwość zapisu na steamid , nick , mieszane ( steamid dla steam i nick dla ns )
  • Prefixy w say
  • Większe możliwości konfiguracji
  • Poprawiony kod kuszy , granatów na ziemi i rzucanych nozy
  • Zestaw natywów i forwardów do rozbudowy moda
  • Wbudowany anty 0 HP Bug
  • Lista itemów
  • Kod jest znacznie lepszy od wersji diablo Micza
  • Dodatkowe opcje w menu rozdawania punktów
  • Informacje o awansie gracza w say
  • Poprawiony wygląd motd
  • Nowy system itemów
  • Wbudowana nowa wymiana itemami
  • Komendy na dawanie itemów i expa
  • Menu moda
  • Szybkie rozdawanie statystyk
  • Obsługa botów
  • Komenda /exp
  • Dwie nowe statystyki Pancerz i Szczescie
  • Event Diablo
  • System frakcji
  • Komendy /daj i /oddaj
  • Ustawianie nazwy gry
  • Zabezpieczenie przeciwko nabijaniu expa ( wymagana ilość graczy na serwerze ustawiane cvarem )
  • Krótkie komendy
  • Damage jest teraz modyfikowane w lepszy sposób niż poprzez event Damage
  • Wytrzymałość itemu
  • Event Diablo jest to tryb w którym wybierany jest jeden gracz i staje się on "Diablo" reszta graczy musi go zabić jeśli to się uda otrzymają oni dodatkowy exp. Oczywiście Diablo ma ułatwienia tzn. dużą ilość hp , fireballe , ma on też inny model
  • I jeszcze kilka innych rzeczy :)
Lista komend
Takie komendy jak
  • /czary
  • /skille
  • /exp
  • /menu
  • /wymiana
  • /wymien
  • /item
  • /przedmiot
  • /klasy
  • /klasa
  • /reset
  • /drop
  • /rune
  • /daj
  • /komendy
  • /event
Krótkie komendy
  • /k
  • /r
  • /d
  • /p
  • /i
  • /g
  • /ru
  • /w
  • /p
  • /h
  • /ko
  • /m
10_screenshots_2012-01-25_00005.jpg

Opisy klas
http://amxx.pl/topic...549-opisy-klas/

Jak napisałem wcześniej siłą tego moda jest możliwość konfiguracji więc teraz zajmiemy się tym

Najpierw konfiguracja w sma

#define HUD_TEXT ""
#define SQL_TABLE "diablo_nowe_klasy"
#define MAX_LEN_NAME 128
#define MAX_LEN_DESC 256
#define MAX_LEN_NAME_PLAYER 64
#define MAX_LEN_FRACTION 128
#define MAX 32
#define MAX_LEVEL 200
#define MAX_SKILL 100
#define BASE_SPEED 250.0
#define TASK_DEATH 100
#define TASK_RENDER 200
#define THROW_KNIFE_MODEL "models/diablomod/w_throwingknife.mdl"
#define THROW_KNIFE_CLASS "throwing_knife"
#define CLASS_NAME_CORSPE "fakeCorpse"
#define XBOW_ARROW "xbow_arrow"
#define TIME_HUD 1.0
#define GAME_DESCRIPTION "Diablo Mod"
#define ADMIN_FLAG_GIVE ADMIN_IMMUNITY
#define HELP_TASK_ID 91321
#define DIABLO_EVENT_SOUND "sound/diablo_taunt.mp3"
jest tego trochę ale najważniejsze dla nas to

HUD_TEXT
w którym ustawiamy czy jakiś tekst ma się wyświetlić nad hudem z informacjami gracza ( klasa etc. )
możemy tu dodać np. "Forum Serwera www.xyz.pl"

SQL_TABLE
Nazwa tabeli w sql

MAX
Ilość slotów dzięki tej opcji oszczędzimy pamięć serwerowi a i mod będzie działał lepiej

MAX_LEVEL
Maksymalny level

MAX_SKILL
Maksymalny poziom skilli ( umiejętności zręczność etc. )

ADMIN_FLAG_GIVE
Flaga którą musi mieć admin aby używać komend na dawanie Expa i Itemów

#define BOTY
//#define DEBUG
#define DEBUG_LOG "addons/amxmodx/logs/debug.log"
#define BOTY
zakomentuwujemy jeśli nie mamy botów na serwerze
usuwamy komentarz jeśli mamy ( komentarz czyli // )

#define DEBUG
Tryb debug dostajemy więcej informacji co aktualnie robi mod używane raczej tylko jeśli coś nie działa
jeśli wszystko jest ok lepiej to zakomentować

Możemy znaleźć jeszcze coś takiego

#define PREFIX_SAY "^x04[ DiabloMOD ]^x01"
jest to prefix jaki mają wiadomości wysyłane przez mod

Cvary
//sql
diablo_host host
diablo_user user
diablo_pass pass
diablo_db db
//typ zapisu 1 - nick 2 - steam id 3 - steamid lub nick zalezy czy gracz ma steam czy nie
diablo_save_type 3
//sredni level dla nowego gracza
diablo_avg 1
//ustawienia maga
flashlight_custom 1
flashlight_drain 1.0
flashlight_charge 0.5
flashlight_radius 8
flashlight_decay 90
//minimalna ilosc graczy aby dostawac exp
diablo_player_num 2
//ilosc dmg aby dostac 1 exp'a
diablo_dmg_exp 20
//xpbonus
diablo_xpbonus 5
/xpbonus2
diablo_xpbonus2 100
//ustawienia nekromanty czas odradzania
diablo_revival_time 3
//hp po ozywieniu ( + inteligencja wskrzeszajacego )
diablo_revival_health 25
//minimalny dystans od zwlok
diablo_revival_distance 70.0
//szybkosc rzuconego noza
diablo_knife_speed 1000
//dmg zadawane przez rzucony noz
diablo_knife 80.0
//dmg strzaly z kuszy
diablo_arrow 120.0
//mnoznik dla inteligencji przy obliczaniu dmg
diablo_arrow_multi 2.0
//szybkosc strzaly z kuszy
diablo_arrow_speed 1500
//ilosc wytrzymalosci itemu zabieranej przy zginieciu
diablo_durability 10
//koszt expa w rune
diablo_exp_price 14500
//koszt losowego przedmiotu w rune
diablo_random_price 9000
//koszt ulepszenia w rune
diablo_upgrade_price 5000
//koszt w /daj
diablo_price_daj 5000
//event on/off
diablo_event 1
//ilosc wymaganych dropow
diablo_drop_need 100
//hp diablo ( mnozone przez ilosc graczy )
diablo_diablo_hp 1000
//ilosc xp rozdzielane na tych ktozy zabija diablo
diablo_event_exp 10000
//kamera przy diablo 1 - widok zza plecow
diablo_camera 1
//ilosc punktow do rozdania za lvl
diablo_points 2
//ile hp za jeden punkt sily
diablo_strength_power 2
//ile reduckji za jeden punkt zrecznosci
diablo_reduce_power 0.03
//Miejsce wyświetlania informacji o klasie itemie etc. 0 - standardowy lewy dolny róg 1 - informacja hud ( podobnie jak w cod mod )
diablo_hud_mode 1
Cvary ustawiamy w pliku diablomod.cfg

Komendy admina
  • amx_giveexp - daje exp graczowi Użycie amx_giveexp <nick> <ile>
  • amx_giveitem - daje item graczowi Użycie amx_giveitem <nick> <iditemu>
Komendy techniczne
  • diablomod_version - zwraca używana wersję diablomoda
Opis komend
  • /klasy - otwiera listę klas
  • /klasa - otwiera menu klas do wyboru
  • /reset - resetuje rozdane punkty umiejętności
  • /drop - wyrzuca aktualnie posiadany przedmiot
  • /item - opis aktualnie posiadanego przedmiotu
  • /przedmiot - takie samo działanie jak /item
  • /gracze - lista graczy wraz z ich levelami i klasami
  • /czary - twoje statystyki
  • /skille - tak jak /czary
  • /rune - menu gdzie można kupić różne rzeczy
  • /wymiana - wymiana itemami
  • /wymien - tak jak /wymiana
  • /daj - oddaj item za kasę
  • /pomoc - krotka notatka o modzie
  • /komendy - ta lista
  • /exp - informacje o stanie twojego expa
  • /menu - menu moda
  • diablomod_version - wersja diablomoda używana na serwerze
Najważniejsza zmiana to umieszczenie item i klas w odzielnnych pluginach nowe pluginy dopisujemy do plugins-diablomod.ini w folderze configs
Jeżeli ktoś jest zainteresowany tworzeniem nowych itemów , klas lub dodatków radzę zapoznać się z dostepnymi sma i plikiem diablo_nowe.inc gdzie znajdziecie opis natywów i forwardów.

Natywy
  • rejestruje klase
    diablo_register_class(const szNazwa[],const iHealth,const szOpis[] = "" , iFlags = FLAG_ALL , const szFraction[] = "");
  • zwraca klase gracza
    diablo_get_user_class(id);
  • nazwe klasy pobiera
    diablo_get_class_name(classID , Return[] , len);
  • zwraca level
    diablo_get_user_level(id);
  • zwraca exp
    diablo_get_user_exp(id);
  • zwraca points
    diablo_get_user_points(id);
  • zwraca punkty agi
    diablo_get_user_agi(id);
  • zwraca punkty str
    diablo_get_user_str(id);
  • zwraca punkty dex
    diablo_get_user_dex(id);
  • zwraca punkty int
    diablo_get_user_int(id);
  • czy klasa gracza to klasa z tego pluginu
    diablo_is_class_from(id);
  • ustawia rendering graczowi
    diablo_set_user_render(id, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16 , Float:fTime = 0.0 )
  • diablo_add_extra_str( id , iIle );
  • diablo_add_extra_int( id , iIle );
  • diablo_add_extra_agi( id , iIle );
  • diablo_add_extra_dex( id , iIle );
  • czy ma taka klase
    diablo_is_this_class(id,szClass[]);
  • dodawanie speed graczowi
    diablo_set_speed(id,Float:fAmount);
  • ustawianie speed
    diablo_add_speed(id,Float:fAmount);
  • pobranie speed
    Float:diablo_get_speed(id)
  • pobranie dodatkowe speed
    Float:diablo_get_speed_extra(id);
  • diablo_reset_speed( id );
  • zadanie dmg
    diablo_damage(iVictim,iKiller,Float:fDamage,DiabloDamageBits:damageBits);
  • zabij
    diablo_kill(iVictim,iKiller,DiabloDamageBits:damageBits);
  • zadanie dmg w zasiegu
    diablo_create_explode(iKiller,Float:fOrigin[3],Float:fDamage,Float:fDist,bool:bExplode);
  • dodaje hp
    diablo_add_hp(id,iHp);
  • czy jest freezetime
    diablo_is_freezetime();
  • uruchom write hud
    diablo_write_hud_(id);
  • diablo_get_xpbonus();
  • diablo_get_xpbonus2();
  • daje xp
    diablo_add_xp(id,ile);
  • zabiera xp
    diablo_take_xp(id,ile);
  • dodaje noze
    diablo_add_knife(id,iIle);
  • diablo_set_user_grav(id,Float:fGrav);
  • diablo_add_user_grav(id,Float:fGrav);
  • Float:diablo_get_user_grav(id)
  • diablo_reset_grav( id );
  • diablo_give_user_trap(id,bool:give = true);
  • diablo_give_user_bow(id,bool:give = true);
  • diablo_show_hudmsg( id , Float:fTime , const szMessage[] , any:... );
  • diablo_render_cancel( id );
  • diablo_display_icon( id , enable , szNameIcon[] , red , green , blue );
  • diablo_display_fade( id,duration,holdtime,fadetype,red,green,blue,alpha );
  • diablo_give_xp( id , ile );
  • diablo_add_max_hp( id , ile );
  • diablo_register_item( Name[] , durability = 250 );
  • diablo_screen_shake( id , amplitude , duration , frequency );
  • diablo_set_max_hp( id , ile );
  • diablo_get_max_hp( id );
Forwardy
  • gdy klasa zostanie wybrana
    diablo_class_enabled(id);
  • gdy klasa zostanie zmieniona
    diablo_class_disabled(id);
  • przy zmianie broni
    diablo_weapon_deploy(id,wpnID,weaponEnt);
  • czyszczenie wewnetrznych zmiennych klasy
    diablo_clean_data(id);
  • ustawianie wewnetrznych zmiennych klasy
    diablo_set_data(id);
  • prethink gracza
    diablo_preThink(id);
  • diablo_preThinkItem(id);
  • posthink gracza
    diablo_postThink(id);
  • podczas zmiany renderu wysylany do wszystkich pluginów
    diablo_render_change(id);
  • zwracasz czas call cast 0.0 powoduje zatrzymanie
    Float:diablo_cast_time(id,Float:standardTime );
  • call cast wykonany niech plugin dziala
    diablo_call_cast(id);
  • ustawiania speed
    diablo_speed_change(id);
  • przy spaawnie klasy
    diablo_class_spawned(id);
  • przy zabiciu klasy
    diablo_class_killed(id);
  • przy exp killu zwracaj 0 jak nic nie robisz
    diablo_kill_xp(id,iIle);
  • przy exp damage 0 jak nic nie robisz
    diablo_exp_damage(id,iIle);
  • przy uzyciu skillu klasy
    diablo_class_skill_used(id);
  • when cast stop can return diablo_stop
    diablo_cast_stop(id);
  • can move when cast
    diablo_cast_move(id);
  • write hud
    diablo_hud_write(id,szMessage[],iLen);
  • damage
    diablo_damage_taken_post(iKiller,iVictim,iDamage);
  • diablo_damage_taken_pre(iKiller , iVictim , &Float:fDamage );
  • zmiana damage klasy dostaje
    diablo_damage_class_taken(iVictim,iAttacker,&Float:fDamage,damageBits);
  • zmiana damage klasy zadaje
    diablo_damage_class_do(iVictim,iAttacker,&Float:fDamage,damageBits);
  • gracz zespawnowany
    diablo_player_spawned(id);
  • diablo_user_change_class( id , class )
  • diablo_death(iKiller , killerClass , iVictim , victimClass );
  • diablo_item_give( id , szRet[] , iLen );
  • diablo_item_reset( id );
  • diablo_item_drop( id );
  • diablo_item_info( id , szMessage[] , iLen , bool:bList );
  • diablo_upgrade_item( id );
  • diablo_item_set_data( id );
  • diablo_damage_item_taken(iVictim,iAttacker,&Float:fDamage,damageBits);
  • diablo_damage_item_do(iVictim,iAttacker,&Float:fDamage,damageBits);
  • diablo_item_skill_used( id );
  • diablo_item_player_spawned( id );
  • gravity zmieniona
    diablo_grav_change(id);
  • diablo_new_round();
  • wymiana itemami
    diablo_copy_item( iFrom , iTo );
W paczce znajdziemy też dwa dodatkowe pluginy ( znajdują się one w folderze dodatki )
  • Diablo Questy
  • Exp od godzinny
Działają one tak samo jak te opublikowane już na forum więc nie będę się rozpisywał o konfiguracji

Instalacja odbywa się poprzez wrzucenie plików z paczki na serwer

Jeżeli doceniasz ilość pracy włożoną w ten mod nie usuwaj drobnej informacji o autorze wyświetlanej graczowi , dla osób które chcą to ukryć podpowiadam linijka 4719
Zapraszam też na DarkGL Blog | Programowanie Python , Pawn , C++ i Webdeveloping oraz Kanał użytkownika GitzZz14 - YouTube ewentualnie DarkGL3 - YouTube ;)

TutorialeZałączony plik  Diablo Mod Core.rar   6,91 MB  4190 Ilość pobrań

  • +
  • -
  • 87