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

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

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

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

5 страниц V   1 2 3 4 »

вызвать функцию после возрождения

[РЕШЕНО]
Статус пользователя SISA
сообщение 18.10.2016, 17:40
Сообщение #21
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Выше код дал и в нем всё работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 17:41
Сообщение #22
Стаж: 11 лет

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

MrLegiongame, До меня дошло, он похоже вообще не выполняет эту функцию, так как и в начальный функции присутствует set_task(0.1, "RandGlow"); crazy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 17:46
Сообщение #23
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата
set_task(0.1, "RandGlow");


Функции через таск 0.1 не вызывают. Это извращение. Таски используются очень редко и в крайних случаях. Их нельзя пихать везде, где не получается нормально хукнуть событие. Тем более, ты вызываешь RandGlow при респе конкретного игрока, а ID игрока в сам таск не передаешь. Сразу возникает вопрос, а нафига RandGlow вызываеть при респе игрока и не отдавать ID ? Значит сам смысл функции теряется или там внутри этого RandGlow творится какой-то жетскач.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 17:54
Сообщение #24
Стаж: 11 лет

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

SISA, плагин сам по себе написаны через попу , я пытаюсь исправить это положение crazy.gif также по твоей функции у меня тоже не работает.

scripte

Код
public RandGlow() {

    new Red = random(256);
    new Green = random(256);
    new Blue = random(256);

    new players[32], num, player;

    get_players(players, num, "ah")

    for(new i = 0; i < num; i++)
    {
        player = players[i];
        set_user_rendering(player, kRenderFxGlowShell, Red, Green, Blue, kRenderNormal,30)
    }
}



Cкрытый текст

menu hader

Код
        case 1:
        {
            vibri_event = 1
            game_on = 1
            hegrenade(0)


task

Код
set_task(3.0, "fw_PlayerSpawn_Post",_,_,_, "a", 99)


setgraned

Код
public fw_PlayerSpawn_Post(id)
{
  if(vibri_event == 1)
  {
   if (!is_user_alive(id))
   return HAM_IGNORED;
        
    strip_user_weapons(id);
    give_item(id, "weapon_hegrenade");
    cs_set_user_bpammo(id, CSW_HEGRENADE, 100);
    set_user_health(id, 100);
   }
     return HAM_IGNORED;
}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 17:57
Сообщение #25
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Давай весь плагин выкладывай, а тот тут какой-то здец у тебя.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 18:05
Сообщение #26
Стаж: 11 лет

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

Цитата(SISA @ 18.10.2016, 18:57) *
Давай весь плагин выкладывай, а тот тут какой-то здец у тебя.

plugin

Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>
#include <dhudmessage>

#define Keysmenu_1 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) //Keys: 1234567890
#define Keysmenu_2 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) //Keys: 1234567890

#define ADMIN_ACCESS ADMIN_LEVEL_D

#define OFFSET_TEAM 114
#define OFFSET_DEAGLE_AMMO 384


new mxplr
new status[33]

#define MAXPLAYERS            32

#define is_zombie(%1) (status[%1] & (1<<0))
#define team_change(%1) (status[%1] & (1<<1))

#define make_zombie(%1) (status[%1] = status[%1] | (1<<0))
#define need_teamchange(%1) (status[%1] = status[%1] | (1<<1))


new bool:vibri_event = false;

new inf

new invisibility[33][2];
new chameleon[33][2];
new footsteps[33][2];
new game_on = 0;
new gmsgTeamInfo

enum teams
{
     FM_TEAM_UNASSIGNED = 0,
     FM_TEAM_T,
     FM_TEAM_CT,
     FM_TEAM_SPECTATOR
}

new wents[][] =
{
    "weapon_shield",
    "weaponbox",
    "armoury_entity"

}

public plugin_init()
{
    register_plugin("o", "0.0", "o")

    gmsgTeamInfo = get_user_msgid("TeamInfo")

    register_concmd("glow", "RandGlow", ADMIN_ACCESS, "All Player Random Glow.")

    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
    register_clcmd("kgame", "gmenu")
    register_clcmd("say /kgame", "gmenu")
    register_clcmd("say_team /kgame", "gmenu")

    for(new i = 0; i < sizeof(wents); i++)
    {
        RegisterHam(Ham_Touch, wents[i], "blocktouch")

    }

    mxplr = get_maxplayers()
}

public PlayerSpawn(id)
{    
    fm_strip_user_weapons(id)
    fm_give_item(id, "weapon_knife")

    return PLUGIN_CONTINUE
}    

public  client_putinserver(id)
{
    if(is_user_bot(id))
        return PLUGIN_HANDLED;

    invisibility[id][0] = 0;
    footsteps[id][0] = 0;
    chameleon[id][0] = 0;

    set_user_rendering(id,kRenderFxNone,255,255,255, kRenderNormal,16);

    return PLUGIN_CONTINUE;
}

public client_disconnect(id)
{
    if(is_user_bot(id))
        return PLUGIN_HANDLED;

    invisibility[id][0] = 0;
    footsteps[id][0] = 0;
    chameleon[id][0] = 0;

    return PLUGIN_CONTINUE;
}

public gmenu(id)
{

if (get_user_flags(id) & ADMIN_MENU)
        {
        
            if(game_on == 0)
            {
                new menu = menu_create("\rВыберите игру:", "norandomevent")
                menu_additem(menu, "\yБомбардировка", "0")
                menu_display(id, menu, 0)
                return PLUGIN_HANDLED
            }else{
            client_print(0, print_chat, "[Knife] Одна игра уже запущена!")
            }
        }
}



public norandomevent(id, menu, item)
{
   if( item < 0 ) return PLUGIN_CONTINUE;
   new cmd[3], access, callback;
   menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
   new Choise = str_to_num(cmd)

        switch(Choise)
    {
        case 0:
        {
            vibri_event = 1
            game_on = 1
            hegrenade(0)
        }
    }
}


/*----------------------------------------------Гренабой-----------------------------------------*/
public hegrenade(first) {

    if(vibri_event == 1)
    {
        new players[32], team[32], num, player;

        get_players(players, num, "ah")

        for(new i = 0; i < num; i++)
        {
            player = players[i];

            if((is_user_alive(player)))
            {
                get_user_team(player,team,32);
                strip_user_weapons(player);
                set_task(0.1, "RandGlow"); // Glow
                give_item(player, "weapon_hegrenade");
                cs_set_user_bpammo(player, CSW_HEGRENADE, 100)
                set_user_health(player, 100);
                set_cvar_num("dr_shop", 0);
                client_print(0, print_chat, "[Knife] Играем в бомбардировку!")
                set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
                show_dhudmessage(0, "Играем в бомбардировку!")
                set_task(3.0, "fw_PlayerSpawn_Post",_,_,_, "a", 99)
            }
        }
    }
    else
    {
                client_print(0, print_chat, "[Knife] Эвент кончился")
                return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

public fw_PlayerSpawn_Post(id)
{
  if(vibri_event == 1)
  {
   if (!is_user_alive(id))
   return HAM_IGNORED;
        
    strip_user_weapons(id);
    give_item(id, "weapon_hegrenade");
    cs_set_user_bpammo(id, CSW_HEGRENADE, 100);
    set_user_health(id, 100);
   }
     return HAM_IGNORED;
}

/*----------------------------------------------Гренабой-конец------------------------------------------*/


public RandGlow() {

    new Red = random(256);
    new Green = random(256);
    new Blue = random(256);

    new players[32], num, player;

    get_players(players, num, "ah")

    for(new i = 0; i < num; i++)
    {
        player = players[i];
        set_user_rendering(player, kRenderFxGlowShell, Red, Green, Blue, kRenderNormal,30)
    }
}


stock fm_strip_user_weapons(index) {
    new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
    if (!pev_valid(ent))
        return 0

    dllfunc(DLLFunc_Spawn, ent)
    dllfunc(DLLFunc_Use, ent, index)
    engfunc(EngFunc_RemoveEntity, ent)

    return 1
}


stock fm_set_user_team(id, {teams,_}:iTeam)
{

    if( iTeam > FM_TEAM_SPECTATOR )
    return

    set_pdata_int(id, OFFSET_TEAM, _:iTeam)
}

public team_msg(id, const team[])
{
    emessage_begin(MSG_BROADCAST, gmsgTeamInfo)
    ewrite_byte(id)
    ewrite_string(team)
    emessage_end()

}


stock teams:fm_get_user_team(id)
{
    return teams:get_pdata_int(id, OFFSET_TEAM)

}

stock fm_give_item(index, const item[]) {
    if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
        return 0;

    new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
    if (!pev_valid(ent))
        return 0;

    new Float:origin[3];
    pev(index, pev_origin, origin);
    set_pev(ent, pev_origin, origin);
    set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn, ent);

    new save = pev(ent, pev_solid);
    dllfunc(DLLFunc_Touch, ent, index);
    if (pev(ent, pev_solid) != save)
        return ent;

    engfunc(EngFunc_RemoveEntity, ent);

    return -1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/



Отредактировал: MrLegiongame, - 18.10.2016, 18:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 18:10
Сообщение #27
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Файлом исходным. Видимо здесь отступы криво интерпретируются.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 18:13
Сообщение #28
Стаж: 11 лет

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

Цитата(SISA @ 18.10.2016, 19:10) *
Файлом исходным. Видимо здесь отступы криво интерпретируются.


Прикрепленные файлы:
Прикрепленный файл  score.sma ( 6,35 килобайт ) Кол-во скачиваний: 7
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 18:24
Сообщение #29
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Код
        case 0:
        {
            vibri_event = 1;
            game_on = 1;
            hegrenade(0);
        }



Тут что должно произойти ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 18:30
Сообщение #30
Стаж: 11 лет

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

SISA, Нет там просто плагин определяет что игра включена .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 18:32
Сообщение #31
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(MrLegiongame @ 18.10.2016, 20:30) *
SISA, Нет там просто плагин определяет что игра включена .


там же вызов идет hegrenade(0);

Что вообще плагин делать должен ? Ты меню создал с одной кнопкой. При её нажатии что должно происходить-то ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 18:55
Сообщение #32
Стаж: 11 лет

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

SISA, должнa начаться игра под названием бомбардировка

Отредактировал: MrLegiongame, - 18.10.2016, 18:57
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 19:15
Сообщение #33
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(sergggzi @ 18.10.2016, 21:00) *
могу продолжить, если хочешь продолжений) ты же главный герой шоу, тебе решать))


Прикрепленный файл  score.sma ( 5,2 килобайт ) Кол-во скачиваний: 15


Оно ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 19:40
Сообщение #34
Стаж: 11 лет

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

SISA, Нет не совсем , в твоем коде server выдает гранаты только один раз , а мне надо чтобы он выдавал гранаты также и после воскрешения .
P.S Это только начальная версия плагина ,в дальнейшем я добавлю еще игры.

Отредактировал: MrLegiongame, - 18.10.2016, 19:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 19:43
Сообщение #35
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(MrLegiongame @ 18.10.2016, 21:40) *
SISA, Нет не совсем , в твоем коде server выдает гранаты только один раз , а мне надо чтобы он выдавал гранаты также и после воскрешения .
P.S Это только начальная версия плагина ,в дальнейшем я добавлю еще игры.


Ты проверял ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 19:54
Сообщение #36
Стаж: 11 лет

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

SISA, я понял как плагин будет повторяться , но у меня ведь несколько игр и также есть еще игры основанные на выдачи оружия ,с вашим кодом это не получится совместить .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 19:56
Сообщение #37
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(MrLegiongame @ 18.10.2016, 21:54) *
SISA, я понял как плагин будет повторяться , но у меня ведь несколько игр и также есть еще игры основанные на выдачи оружия ,с вашим кодом это не получится совместить .


С моим кодом можно совместить абсолютно всё.

public fw_PlayerSpawn_Post(id)
{
if(!vibri_event)
return HAM_IGNORED;

тут добавьте проверку(проверки) на необходимый вам мод и всё.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 20:00
Сообщение #38
Стаж: 11 лет

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

SISA, я вам верю поэтому я попробую drinks.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 18.10.2016, 20:12
Сообщение #39
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(MrLegiongame @ 18.10.2016, 22:00) *
SISA, я вам верю поэтому я попробую drinks.gif


Тогда мой тебе совет, как начинающему smile.gif

1. Подписывай все функции и условия. Прям описывай то действие, которое происходит или условие. Через неделю ты уже забудешь свой код на 80% и такие комментарии будут для тебя спасением.
2. Делай правильные названия всех функций. Допустим это:

public hegrenade()

не название функции, а какая-то ерунда, в которой ты сам же и запутаешься, когда код начнет разрастаться.

3. Не надо использовать все модули подряд, типа: fun, кстрайк. Одна фейкмета может заменить своим функционалом оба этих модуля и я вижу, что ты в коде пытаешься использовать её функции вместо фана и кстрайка. Именно так и надо.

4. Разработай для всех своих плагинов общую структуру, вроде:

plugin_init
прекеш
нативы
начало/конец раунда
коннекты/дисконнекты
спавны/киллы
прочие функции
стоки

5. Все public подпиши в виде жирных комментариев, вроде:
Код
/*===============================================================================
                                    [Ham Player Spawn Post]
================================================================*/


визуально, в теле кода, это позволит быстро находить нужную функцию по названию

Отредактировал: SISA, - 18.10.2016, 20:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 18.10.2016, 20:46
Сообщение #40
Стаж: 11 лет

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

SISA, К сожалению этот код также не работает ubeysya.gif
после воскрешения не выдаются повторно амуниция.

Отредактировал: MrLegiongame, - 18.10.2016, 20:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
5 страниц V   1 2 3 4 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: