|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Плагин для разыгровки
|
|
| Immortal_BLG | Дата: Понедельник, 17.03.2008, 13:46:16 | Сообщение # 1 |
|
Лейтенант
Группа: Пользователи
Сообщений: 56
Статус: Не в сети
| Вот код, тут надо сделать, чтоб первый раунд был на ножах, во втором раунде всем давались глоки и война была на них, на третем всем давались юсп и война была на них, четвертый на диглах и на пятом после рестарта шла норм игра... Но как это сделать? Что у меня не правильно? И еще как сделать, чтоб после пятого раунда, после рестарта, чтоб все не начиналось сначала?
Сообщение отредактировал Immortal_BLG - Вторник, 18.03.2008, 13:31:35 |
| |
|
|
| slogic | Дата: Понедельник, 17.03.2008, 20:13:01 | Сообщение # 2 |
|
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| не люблю я такие просьбы. во-первых код ужасный, если просишь кого помочь, почему не хочешь помочь тому, кто тебе может помочь, путем вставки комментариев, блоков TODO (что планируешь сделать и где). во-вторых, я бы на твоем месте задал (а еще лучше поискал ответы) вопросы: 1) как убрать стандартное оружие при рождении игрока 2) как выдать любое оружие игроку Quote (Immortal_BLG) И еще как сделать, чтоб после пятого раунда, после рестарта, чтоб все не начиналось сначала? опять код за тебя написать? расскзываю о самом ценном, об алгоритме: очевидно надо считать раунды, и если счетчик первышает 5, то в функции-перехватчика спавнинга игрока (у тебя там должны отбраться оружия и даваться новые) делать ничего НЕ надо.
|
| |
|
|
| VEN | Дата: Вторник, 18.03.2008, 20:14:08 | Сообщение # 3 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Не уговорил меня тебе помогать - не вижу желания получить качественную помощь с твоей стороны. И, если код небольшой, вылаживай его вдобавок в самом посте, не только как прикрепленный файл. Мне, например, не всегда охота закачивать файл, открывать его. Иногда проще быстро схватить суть проблемы и дать ответ налету. В общем, пока скажу только, что не стоит вызывать strip_user_weapons в событии ResetHUD - ведет к "падению" сервера. Я, кстати, тебе уже рассказывал, как наиболее правильно ловить момент спавнинга игрока, думаю, ты вспомнишь. fm_strip_user_weapons - нет смысла использовать, как и включать fakemeta, т.к. ты можешь использовать strip_user_weapons() из fun модуля, ведь как раз его инклуда тоже включена в скрипт. Для начала информации тебе хватит. А пока научись правильно задавать вопросы, в следующий раз с таким качеством постановки задачи делеко можешь и не уехать. Помни, что хорошо заданный вопрос содержит половину ответа.
|
| |
|
|
| Immortal_BLG | Дата: Пятница, 21.03.2008, 10:16:27 | Сообщение # 4 |
|
Лейтенант
Группа: Пользователи
Сообщений: 56
Статус: Не в сети
| Вот VEN в основном надежда на тебя тут рабочая версия плагина, НО если раскомментировать строчку 119 или просто fm_strip_user_weapons(id), то сервер падает а если использовать register_logevent("logevent_round_start", 2, "1=Round_Start"), то игрок может и во время игры подцепиться и действя к игроку не применятся... Как еще можно сделать? Помогите плиз У меня есть еще мысль попробовать сделать разоружение как в плагине amx_super, когда применяешь к игроку команду amx_disarm, что скажите по этому поводу? Просто я оценив код разоружения(на своем нубском уровне ) понял, что там оружие не удаляется а телепортируется в точку, откуда оно взялось(ну что-то в этом роде ) командой fm_set_user_origin(index, origin[3]) Code stock fm_set_user_origin(index, /* const */ origin[3]) { new Float:orig[3] IVecFVec(origin, orig)
return fm_entity_set_origin(index, orig) } P.S. 2 VEN strip_user_weapons() из fun модуля тоже приводит сервер к падению...
Сообщение отредактировал Immortal_BLG - Пятница, 21.03.2008, 10:25:12 |
| |
|
|
| Brute | Дата: Пятница, 21.03.2008, 14:15:37 | Сообщение # 5 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Добавил в описание темы: "Новый раунд с новым оружием", т.к. не совсем понятно о чём тема.
|
| |
|
|
| many | Дата: Пятница, 21.03.2008, 22:37:05 | Сообщение # 6 |
 Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| я слышал что strip_user_weapons() может привести к падению сервера если у игрока нету оружия (вроде ) а вообще можешь сделать так client_cmd(id,"hud_fastswitch 1"); client_cmd(id,"slot1"); client_cmd(id,"drop"); client_cmd(id,"slot2"); client_cmd(id,"drop"); client_cmd(id,"slot5"); client_cmd(id,"drop"); Но это так.. если ниче не поможет
|
| |
|
|
| DaTa | Дата: Пятница, 21.03.2008, 23:00:14 | Сообщение # 7 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote client_cmd(id,"hud_fastswitch 1"); это мне этично
|
| |
|
|
| Brute | Дата: Пятница, 21.03.2008, 23:09:38 | Сообщение # 8 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (DaTa) это мне этично :) + на ботов это не влияет=)
|
| |
|
|
| many | Дата: Пятница, 21.03.2008, 23:50:54 | Сообщение # 9 |
 Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| ну поэтому я и написал "Но это так.. если ниче не поможет" )) А вообще что если перед strip_user_weapons() дать игроку какое нить оружие что бы сервер не падал (если это конечно из за того что игроку нечего скинуть)
|
| |
|
|
| Brute | Дата: Пятница, 21.03.2008, 23:59:18 | Сообщение # 10 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (many) А вообще что если перед strip_user_weapons() дать игроку какое нить оружие что бы сервер не падал (если это конечно из за того что игроку нечего скинуть) В общем у меня была такая проблема в плагине "VIP-plugin", помню я расставлял задержки set_task(...), можешь мой исходник глянуть, может найдёшь аналогию.
|
| |
|
|
| VEN | Дата: Суббота, 22.03.2008, 02:54:43 | Сообщение # 11 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote strip_user_weapons() из fun модуля тоже приводит сервер к падению... Этого и следовало ожидать, ведь, эта функция по технике практически эквивалентна fm_strip_user_weapons(), которая была создана мной на основе strip_user_weapons(). Quote А вообще что если перед strip_user_weapons() дать игроку какое нить оружие что бы сервер не падал (если это конечно из за того что игроку нечего скинуть) Дело в ResetHUD, как было отмечено выше. Вообще, ResetHUD- нехороший способ отлова спавна игрока. Наиболее эффективный способ: Code public plugin_init() { RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1) }
public fwHamPlayerSpawnPost(iPlayerId) { if (!is_user_alive(iPlayerId)) return HAM_IGNORED
// ...
return HAM_HANDLED } Quote расставлял задержки set_task(...) В 95% случаев, когда писатели плагинов используют set_task(), этого можно избежать. Нет смысла в установке задачи, когда есть более эффективные и точные методы.
|
| |
|
|
| Immortal_BLG | Дата: Суббота, 22.03.2008, 07:39:10 | Сообщение # 12 |
|
Лейтенант
Группа: Пользователи
Сообщений: 56
Статус: Не в сети
| Спасибо VEN, я кстати видел, что можно и так(http://forums.alliedmods.net/showpost.php?p=555687&postcount=67), но не знал как правильно это осуществить... Сейчас все работает, но есть 2 вопроса: 1) зачем проверять жив ли игрок или нет? Веть этож спавн игрока(или можно спавнуться мертвым? ) 2) вот часть кода плагина, сдесь я убрал return HAM_IGNORED и return HAM_HANDLED, работает отлично , ведь это же не повлияет на код? Code public fwHamPlayerSpawn(id) if(get_pcvar_num(g_pcvar_FRK_Enable)&&is_user_alive(id)&&g_iRoundCount){ fm_strip_user_weapons(id) fm_give_item(id,"weapon_knife") switch(round){ case 1:{ fm_give_item(id,"weapon_glock18") fm_give_item(id,"ammo_9mm") fm_give_item(id,"ammo_9mm") fm_give_item(id,"ammo_ 9mm" ) fm_give_item(id,"ammo_9mm") } case 2:{ fm_give_item(id,"weapon_usp") fm_give_item(id,"ammo_45acp") fm_give_item(id,"ammo_45acp") fm_give_item(id,"ammo_ 45ac p") fm_give_item(id,"ammo_45acp") fm_give_item(id,"ammo_45acp") fm_give_item(id,"ammo_45acp") fm_give_item(id,"ammo_ 45ac p") fm_give_item(id,"ammo_45acp") fm_give_item(id,"ammo_45acp") } case 3:{ fm_give_item(id,"weapon_deagle") fm_give_item(id,"ammo_50ae") fm_give_item(id,"ammo_50ae") fm_give_item(id,"ammo _50a e") fm_give_item(id,"ammo_50ae") fm_give_item(id,"ammo_50ae") } } } Ниже готовый плагин, если кому надо...
Сообщение отредактировал Immortal_BLG - Суббота, 22.03.2008, 07:46:35 |
| |
|
|
| VEN | Дата: Суббота, 22.03.2008, 10:34:03 | Сообщение # 13 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote Спасибо VEN, я кстати видел, что можно и так(http://forums.alliedmods.net/showpost.php?p=555687&postcount=67), но не знал как правильно это осуществить... 1) зачем проверять жив ли игрок или нет? Ну, я ведь оба эти вопроса тебе уже осветил ранее в одной из твоих тем - перечитай вторую половину данного сообщения снова. Quote это же не повлияет на код? В твоем случае - нет, т.к. если ничего не возвращать в теле функции FM/HAM-хука, то будет считаться, что возвращено FMRES_IGNORED/HAM_IGNORED.
|
| |
|
|
| Immortal_BLG | Дата: Суббота, 22.03.2008, 11:59:22 | Сообщение # 14 |
|
Лейтенант
Группа: Пользователи
Сообщений: 56
Статус: Не в сети
| Все, понятно, еще раз спасибо и я извиняюсь за первый вопрос, че-то ступил
|
| |
|
|
| VEN | Дата: Суббота, 22.03.2008, 18:17:48 | Сообщение # 15 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote зачем проверять жив ли игрок или нет? Веть этож спавн игрока Для получения более подробной информации по данной теме рекомендую прочесть новую статью: События Player Spawn / Round Start / Round End / New Round (регистрирование спавна игрока и начала/конца/нового раунда).
|
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |