Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Исправить ошибку кода в VipMenu

Статус пользователя default67
сообщение 11.2.2015, 14:53
Сообщение #1


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Всем Привет!)
Помогите пожалуйста исправить ошибку в плагине VipMenu - писал плагин Я))), проблема такова, хотел сделать так, что бы можно было включать и выключать скорость и так же с гравитацией, сделал вроде все правильно но почему-то не работает, ошибок при компиляции - нет, но когда открываю Вип меню, у меня показывает так, Скорость: Выкл, а должно стоять Вкл, и так же с Гравитацией, а когда нажимаю на скорость: выкл, она у меня включаеться, а когда 2-й раз нажимаю, всё тоже самое остаеться без изменений, и скорость не пропадает, и всё так же с гравитацией!))
Заранее спасибо!)
Код:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fakemeta_util>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "VipMenu"
#define VERSION "1.0"
#define AUTHOR "DarkstaR"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /vipmenu", "VipMenu")
register_menucmd(register_menuid("Menu 1"), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_0, "thand")
register_logevent("round_end", 2, "1=Round_End")
RegisterHam(Ham_Spawn, "player", "event_PlayerSpawn_end",1)
}

new keys
new vip_1[33], vip_2[33], vip_5[33]
new Speed[33], Grava[33]

public round_end()
{
for(new id = 0;id <= get_maxplayers(); id++)
{
if(vip_1[id] > 0) vip_1[id] =- 1
if(vip_2[id] > 0) vip_2[id] =- 1
if(vip_5[id] > 0) vip_5[id] =- 1
}
}

public event_PlayerSpawn_end(id)
{
if(is_user_connected(id) && is_user_alive(id))
{
Speed[id] = false
Grava[id] = false
}
}



public VipMenu(id)
{
new name[32]
get_user_name(id, name, 31)
static menu[650], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r[\yVipMenu\r] \wВип меню^n^n")

if(get_user_flags(id) & ADMIN_LEVEL_H)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wВозродиться^n")
keys |= MENU_KEY_1
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dВозродиться^n")
keys &= ~MENU_KEY_1
}

if(is_user_alive(id) && (get_user_flags(id) & ADMIN_LEVEL_H))
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wВзять 255 хп и 255 брони^n")
keys |= MENU_KEY_2
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dВзять 255 хп и 255 брони^n")
keys &= ~MENU_KEY_2
}

if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(is_user_alive(id))
{
if(Speed[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wCкорость: \yВкл^n")
keys |= MENU_KEY_3
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wСкорость: \rВыкл^n")
keys |= MENU_KEY_3
}

}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСкорость^n")
keys &= ~MENU_KEY_3
}
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСкорость^n")
keys &= ~MENU_KEY_3
}

if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(is_user_alive(id))
{
if(Grava[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wГравитация: \yВкл^n")
keys |= MENU_KEY_4
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wГравитация: \rВыкл^n")
keys |= MENU_KEY_4
}

}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dГравитация^n")
keys &= ~MENU_KEY_4
}
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dГравитация^n")
keys &= ~MENU_KEY_4
}

if(is_user_alive(id) && (get_user_flags(id) & ADMIN_LEVEL_H))
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wВзять 16000$^n^n^n")
keys |= MENU_KEY_5
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dВзять 16000$^n^n")
keys &= ~MENU_KEY_5
}

iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход")
keys |= MENU_KEY_0

show_menu(id, keys, menu, -1, "Menu 1")
return PLUGIN_HANDLED
}

public thand(id, key)
{
switch(key)
{
case 0:{
if(vip_1[id] == 0)
{
vip_1[id] = 1
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
else ColorChat(id, NORMAL, "[^x04Вип^x01] ^x03Ждите %d раунд(ов)", vip_1[id])
}
case 1:{
if(vip_2[id] == 0)
{
vip_2[id] = 3
new health[32]
health[id] = get_user_health(id)
set_user_health(id, health[id] + 155)
set_user_armor(id, 255)
}
else ColorChat(id, NORMAL, "[^x04Вип^x01] ^x03Ждите %d раунд(ов)", vip_2[id])
}
case 2:{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(is_user_alive(id))
{
if(Speed[id])
{
Speed[id] = true
set_user_maxspeed(id, 400.0)
}
else
{
set_user_maxspeed(id, 400.0)
Speed[id] = false
}
VipMenu(id)
}
else
{
return PLUGIN_CONTINUE
}
}
else
{
return PLUGIN_CONTINUE
}
}
case 3:{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(is_user_alive(id))
{
if(Grava[id])
{
set_user_gravity(id, 0.6)
Grava[id] = true
}
else
{
set_user_gravity(id, 0.6)
Grava[id] = false
}
VipMenu(id)
}
else
{
return PLUGIN_CONTINUE
}
}
else
{
return PLUGIN_CONTINUE
}
}
case 4:{
if(vip_5[id] == 0)
{
vip_5[id] = 5
new iMoney[32]
iMoney[id] = cs_get_user_money(id)
cs_set_user_money(id, iMoney[id] + 16000)
}
else ColorChat(id, NORMAL, "[^x04Вип^x01] ^x03Ждите %d раунд(ов)", vip_5[id])
}
}
return PLUGIN_HANDLED
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 11.2.2015, 15:13
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

http://amxxmodx.ru/lessons-on-pawn/264-vkl-vykl-funkcii.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя default67
сообщение 11.2.2015, 15:20
Сообщение #3


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Цитата(GOOD FELLOW @ 11.2.2015, 16:13) *

Это ведь пример с текстом!
Я делал по примеру из одного плагина AdminMenu, но там работает!)
Делал так:
Добавил:
Код:
RegisterHam(Ham_Spawn, "player", "event_PlayerSpawn_post",1)

Потом создал:
Код:

public event_PlayerSpawn_post(id)
{
if(is_user_connected(id) && is_user_alive(id))
{
Speed[id] = false
Grava[id] = false
}

Вообщем дальше можешь сам посмотреть, как Я делал. Так как долго описывать это всё))

Отредактировал: default67, - 11.2.2015, 15:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 11.2.2015, 15:24
Сообщение #4


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

и чего, что с текстом? Принцип один и тот же
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя default67
сообщение 11.2.2015, 15:27
Сообщение #5


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Цитата(GOOD FELLOW @ 11.2.2015, 16:24) *
и чего, что с текстом? Принцип один и тот же

А что по примеру выше, я сделал не так, ведь этот способ тоже рабочий, я его брал из плагина AdminMenu, и там он работает!)?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
OverGame
сообщение 11.2.2015, 17:44
Сообщение #6
Стаж: 11 лет

Сообщений: 384
Благодарностей: 217
Полезность: 348

Обычно при смене оружия меняется скорость, по этому можно сделать отлов CurWeapon и устанавливать нашу скорость

Код:
if ( gSpeed [ id ] )
set_user_maxspeed ( id, 800.0 );


в меню

Код:
if ( gSpeed [ id ] )
{
// Пункт меню [Включен]
} else {
// Пункт меню [Выключен]
}


в функции меню

Код:
if ( gSpeed [ id ] )
{
gSpeed [ id ] = false;
} else {
gSpeed [ id ] = true;
}


Пример выглядит вот так

Код:
#include < amxmodx >
#include < fun >

new gSpeed [ 64 ];

public plugin_init( )
{
register_plugin( "test", "1.0", "OverGame" );

register_event( "CurWeapon", "event_change", "be", "1=1" );
}

public event_change( id )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED;

if ( gSpeed [ id ] )
set_user_maxspeed ( id, 800.0 )

return PLUGIN_CONTINUE
}


Отредактировал: OverGame, - 11.2.2015, 17:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя default67
сообщение 11.2.2015, 21:07
Сообщение #7


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Можно полный пример, как делать включение и выключение функции...
Код:
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(is_user_alive(id))
{
if(Speed[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wCкорость: \yВкл^n")
keys |= MENU_KEY_3
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wСкорость: \rВыкл^n")
keys |= MENU_KEY_3
}

}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСкорость^n")
keys &= ~MENU_KEY_3
}
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСкорость^n")
keys &= ~MENU_KEY_3
}

Буду очень благодарен, так как сам немогу понять, куда и что прописывать xD
Я этот пример брал из плагина AdminMenu, но там он работает, а здесь незнаю что не так((

Отредактировал: Bloo, - 11.2.2015, 21:14
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: