|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Помогите с кодом
|
|
| Scofield | Дата: Четверг, 12.06.2008, 10:29:54 | Сообщение # 1 |
 Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Не в сети
| Вот код : Code /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc> #include <fun>
#define PLUGIN "Bob" #define VERSION "1.0" #define AUTHOR "Scofield"
new status[]="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_concmd("bob","cmd_bob") register_concmd("unbob","cmd_unbob") register_event("DeathMsg","event_deathmsg","a") / / Add your code here... } public event_deathmsg(id){ status[id]=0; return PLUGIN_HANDLED } public client_kill(id){ status[id]=0; return PLUGIN_HANDLED } public client_connect(id){ status[id]=0; return PLUGIN_HANDLED } public cmd_bob(id){ if(status[id]==0){ status[id]=1; set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,30); set_hudmessage(14, 97, 230, -1.0, -1.0, 0, 6.0, 6.0) show_hudmessage(id, "Your have Bob.") set_user_health(id,85) return PLUGIN_HANDLED }else{ set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 6.0) show_hudmessage(id, "Your already have SuperMod.") return PLUGIN_HANDLED } return PLUGIN_HANDLED } public cmd_unbob(id){ if(status[id]==0){ status[id]=2; set_user_health(id,200) set_hudmessage(20, 236, 78, -1.0, -1.0, 0, 6.0, 6.0) show_hudmessage(id, "Your have unbob mod.") set_user_rendering(id,kRenderFxGlowShell,0,255,0,kRenderNormal,25); return PLUGIN_HANDLED }else{ set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 6.0) show_hudmessage(id, "Your already have SuperMod.") return PLUGIN_HANDLED } return PLUGIN_HANDLED } . Задача в том, что мне нужно чтоб каждый раз когда игрок умирал, ему надо было заново вводить команду bob или unbob. Вроде все написал правильно, компилятор не гавкает, а серавно после смерти пишет : Your already have SuperMod. Мне кажеться дело в цикле IF, но как? Заранее спс
Сообщение отредактировал Scofield - Четверг, 12.06.2008, 10:32:26 |
| |
|
|
| DaTa | Дата: Четверг, 12.06.2008, 11:26:14 | Сообщение # 2 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (Scofield) new status[]="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}" omg, что это за строка?) у тебя массив будет такого вида {'{', '0', ',' , и т.д. наверно надо инициализировать массив так Code new status[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} но это тоже бред, ведь можно провести аналогичную инициализацию вот так Code new status[33] = {0, ...} но так как по умолчанию при инициализации в pawn переменная имеет значение 0, то запись можно еще упростить: ------------------------------- если ты надеешься, что существует вызов такой функции амхх'ом, то зря ------------------------------- Code public event_deathmsg(id){ status[id]=0; return PLUGIN_HANDLED } неправильно айди игрока узнаешь, нужно так: Code public event_deathmsg(){ new iVictim = read_data(2)//айди убитого игрока status[iVictim]=0; return PLUGIN_HANDLED } см. http://wiki.amxmodx.org/Half-Life_1_Game_Events#DeathMsg
Сообщение отредактировал DaTa - Четверг, 12.06.2008, 11:27:06 |
| |
|
|
| Scofield | Дата: Четверг, 12.06.2008, 11:44:42 | Сообщение # 3 |
 Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Не в сети
| Ого, а я то думал что все так просто. А read_data это типо функция? Есть какието ссылки про неё? Добавлено (2008-06-12, 11:44 Am) --------------------------------------------- Уже все заработало, спасибо. Вот только немного не доходит что такое read_data, английский не сильно, можеш сказать в двух словах. И можно ли с помщью read_data узнать что-то кроме id?
Сообщение отредактировал Scofield - Четверг, 12.06.2008, 11:45:13 |
| |
|
|
| DaTa | Дата: Четверг, 12.06.2008, 12:34:19 | Сообщение # 4 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| я в этом сам не много понимаю, но попытаюсь объяснить что знаю существуют сообщения, которые сервер отправляет клиентам. DeathMsg - это такое сообщение. его можно искуственно создать Code message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0) write_byte(Killer) write_byte(Victim) write_string(weapon) message_end() т.е. сначало вызывается функция message_begin(функция движка MessageBegin), вот ее прототип в павне(см. messages.inc) Code native message_begin(dest, msg_type, origin[3] = {0,0,0}, player = 0); dest - назначение сообщения, смотри message_const.inc каким может быть Code /* Destination types for message_begin() */ #define MSG_BROADCAST 0 // Unreliable to all #define MSG_ONE 1 // Reliable to one (msg_entity) #define MSG_ALL 2 // Reliable to all #define MSG_INIT 3 // Write to the init string #define MSG_PVS 4 // Ents in PVS of org #define MSG_PAS 5 // Ents in PAS of org #define MSG_PVS_R 6 // Reliable to PVS #define MSG_PAS_R 7 // Reliable to PAS #define MSG_ONE_UNRELIABLE 8 // Send to one client, but don't put in reliable stream, put in unreliable datagram (could be dropped) #define MSG_SPEC 9 // Sends to all spectator proxies msg_type - тип сообщения, который может быть таким http://wiki.amxmodx.org/Half-Life_1_Engine_Messages а так же соответсвовать айди одного из сообщений http://wiki.amxmodx.org/Half-Life_1_Game_Events (айди узнается так get_user_msgid("TextMsg"), см. amxmodx.inc, так же есть обратная функция get_user_msgname) origin[3] - координаты сообщения на карте(например, сообщение создание искор на карте использует) player - айди энтити(например, айди игрока при сообщении в чат для правильного выбора цвета команды) ----- потом предоставляются нужные данные, в зависимости от айди сообщения, функциями(messages.inc): Code native write_byte(x); native write_char(x); native write_short(x); native write_long(x); native write_entity(x); native write_angle(x); native write_coord(x); native write_string(x[]); ----- затем сообщение завершается ----- так вот, функция(amxmodx.inc) Code native read_data(value, {Float,Sql,Result,_}:... ); считывает в хуке register_event данные сообщения(отправленые write_* функциями)
|
| |
|
|
| Scofield | Дата: Четверг, 12.06.2008, 17:17:40 | Сообщение # 5 |
 Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Не в сети
| DaTa, а ты знаеш как всатвить модель на карту?
|
| |
|
|
| DaTa | Дата: Четверг, 12.06.2008, 17:33:09 | Сообщение # 6 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| создавай отдельные темы для разных вопросов
|
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |