Witam
Czy jest możliwość stworzenia pluginu, który będzie dawał każdemu graczowi +15 hp na początku rundy? Chodzi mi o to, że gracz zaczynajać rundę będzie miał zamiast 100hp to 115hp.
Jak tak to proszę o pomoc
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.
|
Napisano 16.05.2014 18:55
Witam
Czy jest możliwość stworzenia pluginu, który będzie dawał każdemu graczowi +15 hp na początku rundy? Chodzi mi o to, że gracz zaczynajać rundę będzie miał zamiast 100hp to 115hp.
Jak tak to proszę o pomoc
Napisano 16.05.2014 20:15
Czy jest możliwość stworzenia pluginu, który będzie dawał każdemu graczowi +15 hp na początku rundy?
Tak
To dosłownie 1 min roboty.
#include <amxmodx> #include <hamsandwich> #include <fakemeta> public plugin_init() { register_plugin("Zjem", "Ci", "Noge") RegisterHam(Ham_Spawn,"player","Spawn",1) } public Spawn(id) set_pev(id,pev_health,115.0)
Napisano 17.05.2014 15:53
Przy dodawaniu hp dla gracza sprawdzilbym czy on zyje aby uniknac crashow
Napisano 17.05.2014 16:22
Napisano 17.05.2014 16:49
get_user_health(id)
Napisano 17.05.2014 16:52
Tak pobiorę aktualne zdrowie gracza a ja chcę zrobić wyświetlanie procentowe wiec potrzebuje max_hp gracza
Napisano 17.05.2014 17:01
new max_hp[33];
na koncu w spawn daj
max_hp[id] = get_user_health(id);
jezeli masz jakis plugin ktory dodaje hp za killa czy tam heda czy w ogóle za cos innego to zrob task i tam bedziesz musial sprawdzac max_hp jezeli bedzie wieksze od tego co bylo na poczatku aby procenty sie zgadzaly
Użytkownik UTeam edytował ten post 17.05.2014 17:03
Napisano 17.05.2014 17:12
a to akurat nie ma sensu co za różnica czy żyje czy nie? Ważne że jest podłączony i jest respiony a pozatym to jest event post czyli is_user_alive zawsze powinno zwrócić truePrzy dodawaniu hp dla gracza sprawdzilbym czy on zyje aby uniknac crashow
jeśli w żadnym innym pluginie nie zwiększasz max hp wynosi:A jak teraz pobrać max_hp ? Bo chcę zrobić pozycję w hud:
Napisano 17.05.2014 17:18
public client_PreThink(id) { if(is_user_alive(id)) { new hp = get_user_health(id); set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, CreateHudSyncObj(), "[Zycie : %d | ]", hp); } else { set_hudmessage(255, 0, 0, 0.02, 0.20); ShowSyncHudMsg(id, CreateHudSyncObj(), "Nie zyjesz!"); } return true; }
Mam taki hud, to jak zrobić aby procentowo pokazywało zdrowie .?
Dodam, że do pluginu dodałem to co wyżej tzn. aby gracze mieli 115 hp.
Użytkownik Menel edytował ten post 17.05.2014 17:22
Napisano 17.05.2014 18:13
a to akurat nie ma sensu co za różnica czy żyje czy nie? Ważne że jest podłączony i jest respiony a pozatym to jest event post czyli is_user_alive zawsze powinno zwrócić true
Gdzies kiedys znalazlem temat w ktorym bylo napisane ze jezeli dziala sie na graczach tak jak tutaj dodaje sie hp lepiej sprawdzic czy gracz zyje.
Poniewaz inny plugin moze zabic gracza od razu na spawnie (nie wiadomo jakie pluginy ma kolega) a to jest tylko jeden warunek,ktory nie zaszkodzi a napewnp pomoze
http://amxx.pl/topic...e-zycie-gracza/
http://amxx.pl/topic...-procentowe-hp/
Z tym to zrobisz
Napisano 17.05.2014 18:30
Ale jaka zmienna odpowiada za max hp .?
floatround(hp/max_hp[id]*100)
Napisano 17.05.2014 19:08
hp = get_user_health(id) czyli aktualne hp gracza
max_hp (jezeli inne pluginy nie zmieniaja ci hp nie dodaja za killa itp, to pobierasz to w spawn) = jezeli nie zmienia to wlasnie to jest poczatkowe hp na respie
Napisano 17.05.2014 19:44
Gdzies kiedys znalazlem temat w ktorym bylo napisane ze jezeli dziala sie na graczach tak jak tutaj dodaje sie hp lepiej sprawdzic czy gracz zyje.
Poniewaz inny plugin moze zabic gracza od razu na spawnie (nie wiadomo jakie pluginy ma kolega) a to jest tylko jeden warunek,ktory nie zaszkodzi a napewnp pomoze
Tak zgadzam się inny plugin może zabić ale to niczego nie zmienia na szczęście
Zacznijmy od tego że post w ham'ie jest wykonywany w trakcie realnego respienia (może nawet chwilę przed) ale wszystkie dane już wskazują na to że gracz żyje.
Teraz nie ważne jakim sposobem zabijesz gracza to nadasz mu ustawienia martwego gracza (pare tam flag + wyzerowania niektórych wartości nie mam zamiaru ich wymieniać ;D) dlatego nic się nie stanie jak ustawisz mu te 115 hp (tym sposobem co przedstawiłem) bo i tak go nie ozywisz tym chyba nawet o tym nie przyjdzie pakiet do klienta ale nie sprawdzałem bo nie było potrzeby
A poza tym to 99% pluginów operuje na pre spawn'ie (ostatni argument przyjmuje domyślna wartość a zatem pre) i jeśli tam zabijesz gracza to post się nie wykona a bynajmniej nie w ham'ie ;D
Wyjątkiem tu by było gdybyś zabił gracza po cichu (zabił nie sprawił by wyglądał jak martwy) ale tak by tego ham nie zobaczył (nwm dokładnie po czym ham to sprawdza gdyz nigdy tego nie sprawdzałem) ale wątpię by standardowe moduły na to pozwalały
UTeam mega rada na przyszłość:
"Nie musisz robic zmiennej globalnej, to zrób statyczną. Nie musisz robić zmiennej statycznej to zrób lokalną. (No nie zawsze jak masz robić tablicę o 9098609786507 elementach to walnij sobie jakiegoś globalnego buffora zawsze się przyda) Nie musisz robić zmiennej lokalnej to zrób stałą."
Napisano 17.05.2014 21:03
Daje cały plugin, proszę napisać co robi źle bo nie działa procentowe hp.
Teraz wyświetla tak:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <fakemeta> #include <colorchat> #include <engine> #define TASK_GREET 240 #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" #define FLAGA_VIPA ADMIN_LEVEL_H new bool:maksymalne_zdrowie_gracza[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Spawn,"player","Spawn",1) } public client_connect(id) { set_task(15.0, "przywitanie", id+TASK_GREET, "", 0, "a", 1) } public client_PreThink(id) { if(is_user_alive(id)) { new hp = get_user_health(id); new bool:czyVip = bool:(get_user_flags(id) & FLAGA_VIPA); set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, CreateHudSyncObj(), "[Zycie : %d | %i%%]^n[Fragi: %i]^n[VIP: %s]", hp, floatround(hp/maksymalne_zdrowie_gracza[id]*100), get_user_frags(id), czyVip ? "Tak" : "Nie"); } else { set_hudmessage(255, 0, 0, 0.02, 0.20); ShowSyncHudMsg(id, CreateHudSyncObj(), "Nie zyjesz!"); } return true; } public przywitanie(id) { id-=TASK_GREET new name[32] get_user_name(id,name,31) ColorChat(id, GREEN, "[INFO]^x01 Witaj %s na serwerze^x04 4FuN^x01 BETA", name); } public Spawn(id) { set_pev(id,pev_health,150.0) maksymalne_zdrowie_gracza[id] = get_user_health(id); }
Napisano 17.05.2014 21:10
new bool:maksymalne_zdrowie_gracza[33];
zmien moze na
new maksymalne_zdrowie_gracza[33];
Napisano 17.05.2014 21:13
To nic nie da
Napisano 17.05.2014 21:42
A to nie wiem zawsze myslalem ze typ bool przyjmuje tylko dwie wartosci true i false (1/0).
Blad masz pewnie w tym "floatround(hp/maksymalne_zdrowie_gracza[id]*100",ktoras ze zmiennych przyjmuje wartosc 0 i przy mnozeniu przez 0 zawsze masz 0.
Napisano 17.05.2014 23:35
Dżizys
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <fakemeta> #include <colorchat> #include <engine> #define TASK_GREET 240 #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" #define FLAGA_VIPA ADMIN_LEVEL_H new HudObj public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) HudObj = CreateHudSyncObj() RegisterHam(Ham_Spawn,"player","Spawn",1) } public client_connect(id) set_task(15.0, "przywitanie", id+TASK_GREET, "", 0, "a", 1) public client_PreThink(id) { static Float:hp if(is_user_alive(id)) { pev(id,pev_health,hp) set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, HudObj, "[Zycie : %i | %i%%]^n[Fragi: %i]^n[VIP: %s]", hp, floatround(hp/1.5), get_user_frags(id), (get_user_flags(id) & FLAGA_VIPA) ? "Tak" : "Nie"); } else { set_hudmessage(255, 0, 0, 0.02, 0.20); ShowSyncHudMsg(id, HudObj, "Nie zyjesz!"); } return true; } public przywitanie(id) { id-=TASK_GREET new name[32] get_user_name(id,name,31) ColorChat(id, GREEN, "[INFO]^x01 Witaj %s na serwerze^x04 4FuN^x01 BETA", name); } public Spawn(id) set_pev(id,pev_health,150.0)
Nie prościej ?
Napisano 20.05.2014 18:00
Takie ustawianie maksymalnego poziomu życia sprawi, że plugin będzie niekompatybilny z innymi pluginami, czy modami (np. popularnym BF2).
Obok liczby aktualnych punktów życia każdego gracza (pev_health), każdy gracz posiada także, a jakże… maksymalną liczbę punktów życia, czyli pev_max_health!
Użycie tej, dedykowanego właśnie temu zabiegowi, zmiennej, nie tylko sprawi, że Twój plugin będzie działał razem z innymi ale także oszczędzi Ci tworzenia na nowo czegoś, co już jest zrobione, mianowicie pev_max_health!
Mało tego, obliczenie procent punktów życia danego gracza nie będzie stanowiło żadnego problemu:
new Float:hp, Float:max_hp; pev(id, pev_health, hp); pev(id, pev_max_health, max_hp); new procent_hp = floatround(hp / max_hp * 100); // czyż nie prościej?
PS Pierwszy raz zalinkowałem nasze forumowe pevresearch
Użytkownik 21977 edytował ten post 20.05.2014 18:03
Napisano 20.05.2014 19:54
Benio dlatego napisałem:
jeśli w żadnym innym pluginie nie zwiększasz max hp wynosi:
1. Max hp ( standardowa ilość hp z jaką się respisz/do jakiej mogą cię zleczyć automaty itd ) 100
2. Max hp ( wyznaczona przeze mnie ) 115
Dodam jeszcze że jeśli inny plugin nie ingeruje w pev_max_health i podmieni nasze hp na starcie rundy w późniejszym evencie to nadal wszystko będzie niekompatybilne niestety. Dlaczego? Bo wtedy musieli byśmy uznać iż to podmienione hp jest maksymalną ilością a pev_max_health będzie posiadało stare i oto w taki sposób bedziemy się rodzic z ponad 100% hp
0 użytkowników, 0 gości, 0 anonimowych