Hľadám niekoho kto má čas a chuť [možno aj finančné ohodnotenie, záleží na dohode] naprogramovať plugin do hry Counter Strike verzia 1.6 .
Nakoľko sa do toho nevyznám, neviem ako mám nazvať programovací kód/jazyk ktorým sa také pluginy programujú. Pomôže tento popis AMX Mod X - http://www.amxmodx.org/
príklad kódu jednoduchého pluginu:
Kód: Vybrať všetko
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define MAXCLASSES 5
new const CLASSES[MAXCLASSES][] = {
"None",
"Dog",
"Cat",
"Horse",
"Cow"
}
new const LEVELS[6] = {
100,
200,
400,
800,
1600,
3200
}
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new XP_Kill,XP_Knife,XP_Hs,SaveXP,g_vault
public plugin_init()
{
register_plugin("XpMod", "1.0", "Fxfighter")
register_event("DeathMsg", "eDeath", "a")
SaveXP = register_cvar("SaveXP","1")
XP_Kill=register_cvar("XP_per_kill", "20")
XP_Hs=register_cvar("XP_hs_bonus","20")
XP_Knife=register_cvar("XP_knife_bonus","20")
g_vault = nvault_open("animod")
register_clcmd("say /class", "ChangeClass")
register_clcmd("say_team /class", "ChangeClass")
register_clcmd("say /xp", "ShowHud")
register_clcmd("say_team /xp", "ShowHud")
}
public eDeath( )
{
new attacker = read_data( 1 )
new headshot = read_data( 3 )
new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
if(headshot)
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
if(weapon == CSW_KNIFE)
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_chat, "[Animal Mod] Congratulations! You are a level %i %s!",PlayerLevel[attacker],CLASSES[PlayerClass[attacker]])
PlayerLevel[attacker] += 1
}
ShowHud(attacker)
SaveData(attacker)
}
public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0)
show_hudmessage(id, "Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}
public ChangeClass(id)
{
new menu = menu_create("Class Menu" , "Class_Handle");
menu_additem(menu ,"Dog", "1" , 0);
menu_additem(menu ,"Cat", "2" , 0);
menu_additem(menu ,"Horse", "3" , 0);
menu_additem(menu ,"Cow", "4" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
return PLUGIN_CONTINUE;
}
public Class_Handle(id , menu , item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
}
new szCommand[6] , szName[64];
new access , callback;
menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
new i = str_to_num(szCommand)
if(PlayerClass[id] != i)
{
PlayerClass[id] = i
client_print(id,print_chat,"You are now a %s",CLASSES[i])
}
else
{
client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}
public client_connect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
LoadData(id)
}
}
public client_disconnect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
SaveData(id)
}
PlayerXP[id] = 0
PlayerLevel[id] = 0
PlayerClass[id] = 0
}
public SaveData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerxp[32], playerlevel[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
} Ako by sa mal plugin správať, čo by mal robiť, kedy by mal robiť to a to, jednoduché menu, popis pluginu a celý help pluginu mám už starostlivo rozpísané.
Potrebujem to teraz všetko zlepiť dokopy, aby to fungovalo.
Moje požiadavky nie sú náročné pre človeka ktorý už nejaký ten plugin naprogramoval.
Uvediem niekoľko funkcií ktoré od pluginu vyžadujem:
- jednoduché menu:
[rank (zobrazí hráčovi informácie o jeho levely, kolko xp bodov potrebuje aby bol dalsi level, meno levelu,etc), help (sprievodca pluginom, urcita legenda, jednoducho samotne vysvetlenie celeho systemu pluginu - to by som samozrejme napísal ja), players (zobraziť zoznam hráčov aktuálne hrajúcich na servery v jednoduchej tabuľke aj s hodnosťami hráčov)]
- hlásenia:
[hráč postúpil na level x, zvuková signalizácia hráčovi ktorý postúpil na ďalší level, hráč je level x, po pripojení hráča na server sa všetkým zobrazí hlásenie(jedná sa o hráča najvyššieho levelu), etc.]
- ukazovateľ a počítadlo XP bodov [budú nastavené hodnoty za zabitie hráča a prežitie kola, tie sa budú sčítavať a po dosiahnutí určitého čísla (XP body) hráči postúpy na ďalší level]
- Priraďovanie hráčom špeciálne "schopnosti" keď dosiahne určitý level [hp, vesta, FB, x%HE, awp, deagle, etc]
- ukladanie fragov hráčom [fragy sa budú neustále sčitovať. Keď sa zmení mapa, alebo sa hráč odpojí a znovu napojí, bude mať stále toľko fragov, koľko mal pred tým než sa zmenila mapa alebo sa odpojil. Jedná sa čiste o plusové fragy (tj. zabíjanie hráčov, prežitie kola), nie smrť
- v určitom levely hráč dostane rozličný skin od hráčov v iných leveloch [jedná sa o jeden rozličný skin, hráč s najvyšším levelom]
etc.
Na serveroch je veľa xp pluginov, tento je (aspoň ja to tak vidím) jednoduchší v tom, že si tu hráči nič za XP body nezamieňajú, body sa zamieňajú automaticky po dosahovaní určených bodov pre level v ktorom sa hráč nachádza. Keď sa dostane na určitý level, priradí sa mu napr. 100% dostať HE.
Proste len hrajú a využívajú čo im ich získaný level poskytuje.
V neposlednom rade potrebujem aby to ten plugin samozrejme všetko ukladal.
Problém je asi v tom, že to má byť pre server s duálnym protokolom. Tu sa trochu bojím ako sa to dá riešiť s ukladaním levelov hráčom. Na steame by to bolo asi podľa steam ID, ale o niečom takom už neskôr.
Vedel by teda niekto? Má niekto čas? Chuť?
Počítam s tým že plugin sa po jeho otestovaní a dokončení môže hodiť na alliedmods.net [ak bude mať teda dotyčný záujem], takže bude prístupný širokej verejnosti.
Ako hovorím, všetky hodnoty, mená, nastavenia, skiny, zvuky, rebríčky, tabuľky a neviem čo všetko mám pripravené, potrebujem tú najdôležitejšiu a najťažšiu vec, všetko to nakódiť do kopy, aby to fungovalo.
Ďakujem za odpovede, kľudne píšte sem, prípadne ss. prípadne mail [email protected]