|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Как исправить?
|
|
many | Дата: Среда, 19.03.2008, 21:47:18 | Сообщение # 1 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| Писал я плагин для своего JUMP что бы при /weapons давалось несколько оружий + 250 ammo к каждому... и при перезарядке ammo опять становилось 250 Только AMXX ругаеться потому что я пытаюсь дать weapon_knife ammo И че то у меня не получаеться сделать норм.. Code #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun>
#define PLUGIN "weapons" #define AUTHOR "many" #define VERSION "0.1" #define MAX_WEAPONS 15
new WeaponList[MAX_WEAPONS][] = { "weapon_usp", "weapon_glock18", "weapon_deagle", "weapon_p228", "weapon_elite", "weapon_fiveseven", "weapon_m3", "weapon_xm1014", "weapon_m4a1", "weapon_famas", "weapon_ak47", "weapon_awp", "weapon_galil", "weapon_m249", "weapon_c4" }
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd( "say /weapons", "cmdweapons", 0, "- give you some weapons") register_event("CurWeapon" , "cmdCurWeapon" , "abe", "1=1") }
public cmdweapons(id) { if( !is_user_alive(id)) return PLUGIN_HANDLED new i for( i = 0; i < MAX_WEAPONS; i++ ) { give_item(id, WeaponList[i]) } set_task(0.1,"cmdammo",id) return PLUGIN_HANDLED }
public cmdammo(id) { new Weapons[32] new numWeapons, j, weapon get_user_weapons(id, Weapons, numWeapons) for (j=0; j<numWeapons; j++) { weapon = Weapons[j] cs_set_user_bpammo(id, weapon , 250) } return PLUGIN_HANDLED }
public cmdCurWeapon(id) { if(is_user_alive(id)){ new Weapons[32] new numWeapons, j, weapon get_user_weapons(id, Weapons, numWeapons) for (j=0; j<numWeapons; j++) { weapon = Weapons[j] if(cs_get_user_bpammo(id, weapon) != 250){ cs_set_user_bpammo(id, weapon , 250) } } } return PLUGIN_HANDLED }
|
|
| |
VEN | Дата: Среда, 19.03.2008, 22:28:42 | Сообщение # 2 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Автор, необходимо давать более конкретно название создаваемой теме (добавил описание темы). Необходимо соблюдать Общие правила всех разделов форума. "abe" следует исправить на "be", a - это флаг для глобальных событий. Последняя функция может быть безболезненно и даже полезно урезана: Code public cmdCurWeapon(id) { cs_set_user_bpammo(id, read_data(2), 250) } Но нужно регистрировать ее с определенными фильтрами, отбросив hegrenade, c4, smokegrenade, flashbang и knife, и, убедившись, что сообщение вызывается для кокретного оружия, а не с нулевым WeaponId(индексом оружия): Code register_event("CurWeapon" , "cmdCurWeapon" , "be", "1=1", "2>0", "2!4", "2!6", "2!9", "2!25", "2!29") set_task() здесь совсем не нужно - это только делает код менее эффективным. Для фильтрации вышеуказанных оружий в cmdammo функции предварительно создадим макроконстанту, содержащую бит-сумму индексов этих т.н. "нежелательных" оружий: Code #define NON_BACKPACK_AMMO_WEAPONS ((1<<CSW_HEGRENADE) | (1<<CSW_C4) | (1<<CSW_SMOKEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_KNIFE)) После чего в теле цикла перед функцией cs_set_user_bpammo добавим строку проверки на отсутствие принадлежности данного оружия к вышеупомянутым:Code if (!(NON_BACKPACK_AMMO_WEAPONS & (1<<weapon)))
|
|
| |
many | Дата: Среда, 19.03.2008, 23:08:44 | Сообщение # 3 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| все равно ругаеться... L 03/19/2008 - 23:05:09: [CSTRIKE] Invalid weapon id 29 L 03/19/2008 - 23:05:09: [AMXX] Displaying debug trace (plugin "weapons2.amxx") L 03/19/2008 - 23:05:09: [AMXX] Run time error 10: native error (native "cs_set_user_bpammo") L 03/19/2008 - 23:05:09: [AMXX] [0] weapons2.sma::cmdCurWeapon (line 61) L 03/19/2008 - 23:05:37: [CSTRIKE] Invalid weapon id 29 L 03/19/2008 - 23:05:37: [AMXX] Displaying debug trace (plugin "weapons2.amxx") L 03/19/2008 - 23:05:37: [AMXX] Run time error 10: native error (native "cs_set_user_bpammo") L 03/19/2008 - 23:05:37: [AMXX] [0] weapons2.sma::cmdCurWeapon (l 61 строчка это public cmdCurWeapon(id) { --> cs_set_user_bpammo(id, read_data(2), 250) } хотя стоит - register_event("CurWeapon" , "cmdCurWeapon" , "be", "1=1", "2>0", "2!4", "2!6", "2!9", "2!25", "2!29")
|
|
| |
VEN | Дата: Среда, 19.03.2008, 23:29:14 | Сообщение # 4 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Плагин перекомпилирован/переустановлен? А вообще, необходимо вылаживать код в таких случаях.
|
|
| |
many | Дата: Среда, 19.03.2008, 23:34:51 | Сообщение # 5 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| он и перекомпилирован и переустановлен. Code #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun>
#define PLUGIN "weapons" #define AUTHOR "many" #define VERSION "0.1" #define MAX_WEAPONS 15 #define NON_BACKPACK_AMMO_WEAPONS ((1<<CSW_HEGRENADE) | (1<<CSW_C4) | (1<<CSW_SMOKEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_KNIFE))
new WeaponList[MAX_WEAPONS][] = { "weapon_usp", "weapon_glock18", "weapon_deagle", "weapon_p228", "weapon_elite", "weapon_fiveseven", "weapon_m3", "weapon_xm1014", "weapon_m4a1", "weapon_famas", "weapon_ak47", "weapon_awp", "weapon_galil", "weapon_m249", "weapon_c4" }
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd( "say /weapons", "cmdweapons", 0, "- give you some weapons") register_event("CurWeapon" , "cmdCurWeapon" , "be", "1=1", "2>0", "2!4", "2!6", "2!9", "2!25", "2!29") }
public cmdweapons(id) { if( !is_user_alive(id)) return PLUGIN_HANDLED new i for( i = 0; i < MAX_WEAPONS; i++ ) { give_item(id, WeaponList[i]) } set_task(0.1,"cmdammo",id) return PLUGIN_HANDLED }
public cmdammo(id) { new Weapons[32] new numWeapons, j, weapon get_user_weapons(id, Weapons, numWeapons) for (j=0; j<numWeapons; j++) { weapon = Weapons[j] if (!(NON_BACKPACK_AMMO_WEAPONS & (1<<weapon))) cs_set_user_bpammo(id, weapon , 250) } return PLUGIN_HANDLED }
public cmdCurWeapon(id) { cs_set_user_bpammo(id, read_data(2), 250) } Теперь код такой) Кстати 250 c4 тоже имееться)))))
Сообщение отредактировал many - Среда, 19.03.2008, 23:42:45 |
|
| |
VEN | Дата: Четверг, 20.03.2008, 00:01:47 | Сообщение # 6 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| У меня, вроде, работает твой, код как надо. Измени, например, номер версии плагина, перекомпилируй, переустанови плагин, набери в консоли amx_plugins или amxx plugins (в консоли сервера) и проверь, изменился ли номер версии.
|
|
| |
many | Дата: Четверг, 20.03.2008, 01:14:46 | Сообщение # 7 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| версия поменялась ошибочка эта осталась... она не стразу появляеться а через минуту игры примерно посмотри в консоле серверной
|
|
| |
slogic | Дата: Четверг, 20.03.2008, 13:05:47 | Сообщение # 8 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Ну и правильно тебе пишет что ошибка, т.к. 29 - это нож.
|
|
| |
DaTa | Дата: Четверг, 20.03.2008, 13:29:56 | Сообщение # 9 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (many) public cmdCurWeapon(id) {cs_set_user_bpammo(id, read_data(2), 250)} когда игрок достает нож - ты ему даешь патроны
|
|
| |
many | Дата: Четверг, 20.03.2008, 14:18:17 | Сообщение # 10 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| При регистрации eventa я укзал register_event("CurWeapon" , "cmdCurWeapon" , "be", "1=1", "2>0", "2!4", "2!6", "2!9", "2!25", "2!29") Так что он не должен давать патроны ножу (вроде )
|
|
| |
slogic | Дата: Четверг, 20.03.2008, 17:10:03 | Сообщение # 11 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| фишка в том, что ты не используешь read_Quote (many) register_event("CurWeapon" , "cmdCurWeapon" , "be", "1=1", "2>0", "2!4", "2!6", "2!9", "2!25", "2!29") а вот кстати, я до сих пор точно не понимаю, все эти условия трактуются как AND или если хотя бы одно выполнилось, то вызвать обработчик? я стараюсь сложные условия писать сам, лично, так надежнее. и тебе советую.
|
|
| |
many | Дата: Четверг, 20.03.2008, 17:28:56 | Сообщение # 12 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| Quote фишка в том, что ты не используешь read_ а поподробнее можно? =)
|
|
| |
VEN | Дата: Четверг, 20.03.2008, 22:25:43 | Сообщение # 13 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote а вот кстати, я до сих пор точно не понимаю, все эти условия трактуются как AND или если хотя бы одно выполнилось, то вызвать обработчик? Вопрос в "яблочко". OR - хотя бы одно из условий. Для каждого параметра своя цепочка OR проверок. Именно поэтому, впринципе, ошибка и выскакивает. register_event фильтр - штука удобная, но можно было бы AND функционал добавить, хотя, это усложняет конструкцию, что чревато, поэтому вопрос спорный... Quote Quote фишка в том, что ты не используешь read_ а поподробнее можно? Убери из фильтра условия: "2!4", "2!6", "2!9", "2!25", "2!29" В cmdCurWeapon функции сам сконструируй проверку на отсеивание данных индексов оружий. Самый эффективный способ: Code static iWeaponId iWeaponId = read_data(2) if (!(NON_BACKPACK_AMMO_WEAPONS & (1<<iWeaponId))) cs_set_user_bpammo(id, iWeaponId, 250)
|
|
| |
many | Дата: Пятница, 21.03.2008, 16:44:49 | Сообщение # 14 |
Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| Спасибо всем особенно VEN Вот готовый плагин мб кому нить пригодиться ))) Тему можно закрывать)
Сообщение отредактировал many - Пятница, 21.03.2008, 16:45:12 |
|
| |
Brute | Дата: Пятница, 21.03.2008, 17:44:40 | Сообщение # 15 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| закрыто.
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |