Tutaj masz gotowiec. Dodane są jeszcze HSy itp.
http://amxx.pl/topic/13035-ranga/
To równanie zostało stworzone przy pomocy kodu LaTeX:
Edytor LaTeX online: CodeCogs.com/latex/eqneditor.php
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.
|
Napisane przez oeN. w 16.08.2015 22:07
Napisane przez oeN. w 16.08.2015 16:11
Napisane przez oeN. w 15.08.2015 14:12
Napisane przez oeN. w 15.08.2015 13:52
Napisane przez oeN. w 15.08.2015 13:48
Napisane przez oeN. w 15.08.2015 08:25
Napisane przez oeN. w 14.08.2015 22:10
Napisane przez oeN. w 14.08.2015 22:00
Napisane przez oeN. w 14.08.2015 20:48
Proste.
#include <amxmodx> #include <colorchat> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "oeN." new killName[33][32], killWpn[33]; new const playerWeapon[][] = { "", "P228", "", "SCOUT", "HEGRENADE", "XM1014", "", "MAC10", "AUG", "", "ELITE", "FIVESEVEN", "UMP45", "SG550", "GALIL", "FAMAS", "USP", "GLOCK18", "AWP", "MP5", "M249", "M3", "M4A1", "TMP", "G3SG1", "", "DEAGLE", "SG552", "AK47", "KNIFE", "P90" } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /hp", "cmdHp"); register_clcmd("say_team /hp", "cmdHp"); } public DeathMsg() { new kid = read_data(1); new vid = read_data(2); get_user_name(kid, killName[vid], 31); killWpn[vid] = get_user_weapon(kid); } public cmdHp(id){ if(!is_user_alive(id)) ColorChat(id, RED, "^x01Zabity przez^x03 %s^x01 z^x03 %s", killName[id], playerWeapon[killWpn[id]]); else client_print(id, print_chat, "Jestes nadal zywy."); }
Napisane przez oeN. w 14.08.2015 15:40
Napisane przez oeN. w 14.08.2015 09:02
public GetWeaponName(id, szReturn[], iLen) { new szName[24]; if(get_weaponname(get_user_weapon(id), szName, 23)) { replace(szName, 23, "weapon_", ""); copy(szReturn, iLen, szName); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }przyklad
new szWeapon[24]; GetWeaponName(id, szWeapon, 23); ColorChat(id, RED, "^x04 *^x03 (%s)^x01 Zadales dotychczas^x03 %d^x01 obrazen.", szWeapon, Damage[id]);
Fajna funkcja tylko że nazwa będzie z małych liter
Wyskrobałem co nieco
#include <amxmodx> #include <colorchat> #include <hamsandwich> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "oeN." new pWeapon[33][31], Damage[33][31], bool:pDamage[33]; new const playerWeapon[][] = { "", "P228", "", "SCOUT", "HEGRENADE", "XM1014", "", "MAC10", "AUG", "", "ELITE", "FIVESEVEN", "UMP45", "SG550", "GALIL", "FAMAS", "USP", "GLOCK18", "AWP", "MP5", "M249", "M3", "M4A1", "TMP", "G3SG1", "", "DEAGLE", "SG552", "AK47", "KNIFE", "P90" } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /me", "cmdMe"); register_clcmd("say_team/me", "cmdMe"); register_logevent("NewRound", 2, "1=Round_Start"); RegisterHam(Ham_TakeDamage, "player", "ForwardPlayerDmg", 1); } public NewRound() { for(new id = 1; id<=32; id++){ if(!is_user_connected(id)) continue; pDamage[id] = false; for(new i=1;i<=31;i++){ Damage[id][i] = 0; pWeapon[id][i] = 0; } } } public ForwardPlayerDmg(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) { pWeapon[iAttacker][get_user_weapon(iAttacker)] = get_user_weapon(iAttacker); Damage[iAttacker][get_user_weapon(iAttacker)] += floatround(fDamage); if(!pDamage[iAttacker]) pDamage[iAttacker] = true; } public cmdMe(id) { if(pDamage[id]){ for(new i=1;i<=31;i++){ if(pWeapon[id][i]) ColorChat(id, RED, "^x04*^x03(%s)^x01 Zadales dotychczas^x04 %d^x01 obrazen.", playerWeapon[pWeapon[id][i]], Damage[id][pWeapon[id][i]]); } } else ColorChat(id, RED, "*^x01 Nie zadales obrazen przeciwnikowi."); return PLUGIN_HANDLED; }
pWeapon - zapisuje id broni jakiej użył gracz podczas zadawania obrażeń
Damage - zapisuje obrażenia danej broni (id broni)
pDamage - sprawdza czy gracz zadał obrażenia
Dzięki pWeapon możemy wypisywać z tablicy nazwy broni oraz ile z tej broni zadano obrażeń. Wszystko resetuje się przy nowej rundzie.
Sprawdź
Napisane przez oeN. w 13.08.2015 11:16
Tworzymy tablicę która będzie odpowiadać za nazwy broni.
new const playerWeapon[][] = { "", "P228", "", "SCOUT", "HEGRENADE", "XM1014", "", "MAC10", "AUG", "", "ELITE", "FIVESEVEN", "UMP45", "SG550", "GALIL", "FAMAS", "USP", "GLOCK18", "AWP", "MP5", "M249", "M3", "M4A1", "TMP", "G3SG1", "", "DEAGLE", "SG552", "AK47", "KNIFE", "P90" }
Teraz wystarczy odpowiednie ID które będzie równe naszej nazwie z tablicy. W prosty sposób ID pobieramy przez get_user_weapon.
A więc twoja funkcja cmdMe będzie wyglądać tak:
public cmdMe(id) { if(Damage[id]) { ColorChat(id, RED, "^x04*^x03(%s)^x01 Zadales dotychczas^x04 %d^x01 obrazen.", playerWeapon[get_user_weapon(id)], Damage[id]); } else ColorChat(id, RED, "*^x01 Nie zadales obrazen przeciwnikowi."); return PLUGIN_HANDLED; }
A i zmieniłem w ColorChat(0, [...]) na ColorChat(id, [...]) - chyba nie chcesz żeby każdy widział wiadomość ile gracz i jaką bronią zadał obrażenia
Po napisaniu wszystkiego dopiero się skapłem o co Ci chodzi dokładniej. Tylko powiedz mi jeszcze jedno. Chcesz by obrażenia był zaliczane osobno, więc muszą się zapisać do jakiejś zmiennej (z tym nie będzie problemu), jednak czy one mają być tylko na jedną rundę? Od nowej rundy się zerują mam nadzieję?
Napisane przez oeN. w 13.08.2015 10:59
Napisane przez oeN. w 31.07.2015 13:17
Napisane przez oeN. w 31.07.2015 12:12