[ROZWIĄZANE] Ograniczenie umiejętności: sz...
protypek
07.06.2015
Witam, próbowałem przerobić umiejętność szybkostrzelność tak żeby nie obejmowała kosy, awp, scouta. Ale nie dałem rady.
Proszę o pomoc.
Oczywiście daje +.
Attached Files
protypek
13.06.2015
L 06/13/2015 - 17:13:27: [AMXX] Run time error 10 (plugin "rpgx_upgrade_speedshoot+.amxx") (native "get_weaponname") - debug not enabled!L 06/13/2015 - 17:13:27: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
Nie chce debugować bo mam już serwer obciążony wystarczająco.
Edited by protypek, 13.06.2015 16:17.
Rivit
13.06.2015
debuguj, nie wpływa to na obiążenie aż tak, a jak wyłapiesz błąd z debugu to możesz potem wyłączyć debug
protypek
14.06.2015
debuguj, nie wpływa to na obiążenie aż tak, a jak wyłapiesz błąd z debugu to możesz potem wyłączyć debug
Ok. A ty właśnie czasami tego nie zrobiłeś że ten plugin zmienia szybkostrzelność w awp, scoucie oraz na kosie? Bo ja chciałem żeby w tych broniach się to nie zmieniało.
Rivit
14.06.2015
Wydaje mi się, że nie...
Po prostu sprawdź.
Ewentualnie zmień to:
if(!(1<<weaponid & (1<<CSW_KNIFE | 1<<CSW_AWP | 1<<CSW_SCOUT)))
na to:
if(~(1<<weaponid) & (1<<CSW_KNIFE | 1<<CSW_AWP | 1<<CSW_SCOUT))
XXL
18.06.2015
if(~(1<<weaponid) & (1<<CSW_KNIFE | 1<<CSW_AWP | 1<<CSW_SCOUT))
Tak z ciekawości zapytam co daje ten kod
(~
???
Rivit
18.06.2015
Negacja bitowa albo odwracanie bitów...
Chyba tak to się nazywa....
Gdy mamy liczbę 100101 to ~100101 = 011010
A że 1<<x, gdzie x to liczba, to nic innego jak przesunięcie bitowe, poczytaj sobie
CSW_* to nic innego jak liczba (zobacz amxconst.inc)
Rivit
20.06.2015
A kompilujesz ten kod? Podmieniasz na serwerze? Nie wydaje mi się, żeby kod był błędny...
protypek
20.06.2015
Oczywiście. -,-
Posiadam teraz 3 serwery i to nie są moje pierwsze serwery. Więc wiem czy działa plugin poprawnie czy nie.
Aktualnie kompilowałem tylko ograniczając bronie AWP i Scouta:
#include <amxmodx> #include <engine> #include <fakemeta_util> #include <rpgx> new upgrade_id; new level, weaponid, ent, Float:nextattack, weapon[32]; public plugin_init() register_plugin("SpeedShoot+ RPGx Upgrade", "2.0", "roflmao456"); public RPGx_OnPluginReady() upgrade_id = RPGx_MakeUpgrade("SpeedShoot+", 5, 15, 15); public client_PreThink(id) { level = RPGx_GetUpgradeLevel(id, upgrade_id); if(level) { weaponid = get_user_weapon(id); if(~(1<<weaponid) & (1<<CSW_AWP | 1<<CSW_SCOUT)) { get_weaponname(weaponid, weapon, 31); ent = fm_find_ent_by_owner(-1, weapon, id); if(ent) { nextattack = get_pdata_float(ent, 46, 4); if(nextattack > 0.0) set_pdata_float(ent, 46, nextattack - (nextattack * (level * 0.015)), 4); } } } }
Myślałem nad czymś takim ale nwm czy to coś zmieni:
#include <amxmodx> #include <engine> #include <fakemeta_util> #include <rpgx> new upgrade_id; new level, weaponid, ent, Float:nextattack, weapon[32]; public plugin_init() register_plugin("SpeedShoot+ RPGx Upgrade", "2.0", "roflmao456"); public RPGx_OnPluginReady() upgrade_id = RPGx_MakeUpgrade("SpeedShoot+", 5, 15, 15); public client_PreThink(id) { level = RPGx_GetUpgradeLevel(id, upgrade_id); if(level) { weaponid = get_user_weapon(id); { get_weaponname(weaponid, weapon, 31); ent = fm_find_ent_by_owner(-1, weapon, id); if(ent) { if(~(1<<weaponid) & (1<<CSW_AWP | 1<<CSW_SCOUT)) nextattack = get_pdata_float(ent, 46, 4); if(nextattack > 0.0) set_pdata_float(ent, 46, nextattack - (nextattack * (level * 0.015)), 4); } } } }
Edited by protypek, 20.06.2015 17:21.
Rivit
20.06.2015
#include <amxmodx> #include <engine> #include <fakemeta_util> #include <rpgx> new upgrade_id; new level, weaponid, ent, Float:nextattack; new const Nazwy_broni[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" } public plugin_init() register_plugin("SpeedShoot+ RPGx Upgrade", "2.0", "roflmao456"); public RPGx_OnPluginReady() upgrade_id = RPGx_MakeUpgrade("SpeedShoot+", 5, 15, 15); public client_PreThink(id) { level = RPGx_GetUpgradeLevel(id, upgrade_id); if(level) { weaponid = get_pdata_int(get_pdata_cbase(id,373,5), 43, 4) if(!(1<<weaponid & (1<<CSW_KNIFE | 1<<CSW_AWP | 1<<CSW_SCOUT))) { ent = fm_find_ent_by_owner(-1, Nazwy_broni[weaponid], id); if(ent) { nextattack = get_pdata_float(ent, 46, 4); if(nextattack > 0.0) set_pdata_float(ent, 46, nextattack - (nextattack * (level * 0.015)), 4); } } } }
Albo mi się wydaje albo coś tu zwraca złe wyniki
protypek
20.06.2015
Coś z tym źle jest, niezdefiniowany symbol:
weaponid = get_pdata_int(get_pdata_cbase(id,373,5), 43, 4)
Rivit
20.06.2015
Przez pół roku tkwiłem w przekonaniu, że get_pdata_cbase jest w fakemecie
Teraz widzę, że nie...
Dodaj:
#include hamsandwich
MAGNET
23.06.2015
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL