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

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

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

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

2 страниц V   1 2

Помогите доделать плагин Respawn

Статус пользователя 5Kirill5
сообщение 16.8.2010, 21:36
Сообщение #1
Стаж: 17 лет

Сообщений: 22
Благодарностей: 2
Полезность: 69

Есть два плагина с багами:
Respawn
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

#define PLUGIN "Respawn"
#define VERSION "1.1"
#define AUTHOR "st0ka"

new respawned[33]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("amx_respawn","1")
    register_cvar("amx_autorespawn","1")
    register_cvar("amx_autorespawn_players","4")
    register_event("DeathMsg","event_death","a")
    register_clcmd("say /respawn","p_respawn")
    register_clcmd("say_team /respawn","p_respawn")
}

public event_death()
{
    new id = read_data(2)
    if(get_cvar_num("amx_autorespawn") == 0 && get_cvar_num("amx_respawn") == 0)
    {
        return PLUGIN_HANDLED
    }
    else if(get_cvar_num("amx_autorespawn") == 1 && get_cvar_num("amx_respawn") == 1)
    {
        set_task(0.1,"respawn",id)
        set_task(2.0,"r_check",id)
    }
    return PLUGIN_HANDLED
}

public respawn(id)
{
    new num = get_playersnum()
    if(num >= get_cvar_num("amx_autorespawn_players"))
    {
        new CsTeams:team = cs_get_user_team(id)
        if(team == CS_TEAM_CT)
        {
            cs_user_spawn(id)
            give_item(id,"weapon_knife")
            respawned[id] = true
        }
        else if(team == CS_TEAM_T)
        {
            cs_user_spawn(id)
            give_item(id,"weapon_knife")
            respawned[id] = true
        }
    }
    else
    {
        return PLUGIN_HANDLED
    }
    return PLUGIN_HANDLED
}

public p_respawn(id)
{
    if(get_cvar_num("amx_respawn") == 1)
    {
        new CsTeams:team = cs_get_user_team(id)
        if(team == CS_TEAM_CT && !is_user_alive(id))
        {
            cs_user_spawn(id)
            give_item(id,"weapon_knife")
        }
        else if(team == CS_TEAM_T && !is_user_alive(id))
        {
            cs_user_spawn(id)
            give_item(id,"weapon_knife")
        }
    }
}

public r_check(id)
{
    if(!respawned[id])
    {
        respawn(id)
    }
}

Иногда игрок возрождается только в списке игроков. Приходиться перезаходить на сервер.
Вообще не возрождается приходиться писать say /respawn, иногда не возрождается.
amx_respawn
Код
/* AMX Mod X script.
*
* (c) Copyright 2002-2003, f117bomb
* This file is provided as is (no warranties).
*
*  ***************************************************************************
****
*  
*    Ported By KingPin( kingpin@onexfx.com ). I take no responsibility
*    for this file in any way. Use at your own risk. No warranties of any kind.
*
*  ***************************************************************************
****
*
* Set Cvar 'amx_respawn' 1 or 0
*
*/

#include <amxmodx>
#include <fun>

public TeamSelect(id)
{
    if (get_cvar_num("amx_respawn") == 1)   {
        new sId[2]
        sId[0] = id
        set_task(10.0,"respawn",0,sId,2)
    }
    return PLUGIN_CONTINUE
}

public death_msg()
{    
    if (get_cvar_num("amx_respawn") == 1)   {
        new vIndex = read_data(2)
        new svIndex[2]
        svIndex[0] = vIndex
        set_task(0.5,"respawn",0,svIndex,2)
    }
    return PLUGIN_CONTINUE
}

public respawn(svIndex[])
{
    new vIndex = svIndex[0]
    if(get_user_team(vIndex) == 3 || is_user_alive(vIndex))
        return PLUGIN_CONTINUE
    spawn(vIndex)
    
    return PLUGIN_CONTINUE    
}

public plugin_init()
{
       register_plugin("amx_respawn","0.9.4","f117bomb")
    register_event("DeathMsg","death_msg","a")
    register_event("ShowMenu","TeamSelect","b","4&Team_Select")
    register_event("VGUIMenu","TeamSelect","b","1=2")
    register_cvar("amx_respawn","0")
    
    return PLUGIN_CONTINUE
}

Спектры возрождаются.
Иногда игрок возрождается только в списке игроков. Приходиться перезаходить на сервер.

Можно как-нибудь избавиться от этих проблем?

Отредактировал: STR@TEG, - 16.8.2010, 22:09
Причина: впредь используй спойлер.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя imba
сообщение 16.8.2010, 22:10
Сообщение #2
Стаж: 16 лет

Сообщений: 1677
Благодарностей: 735
Полезность: 571

Есть такой,багов не замечено.Только команда /respawn не работает,да и зачем она...

sma

Код
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <cstrike>
public plugin_init()
{
    register_plugin("respawn","1.0","atambo")
    register_cvar("sv_respawn","1")
    register_event("DeathMsg","on_Death","a")
    register_forward(FM_SetModel,"check_model",0)
}
public on_Death()
{
    if(get_cvar_num("sv_respawn")!=1)
        return PLUGIN_CONTINUE
    new id = read_data(2)
    set_task(0.5,"player_spawn",id)
    set_task(0.7,"player_spawn",id)
    return PLUGIN_CONTINUE
}
public player_spawn(id)
{
    if (!is_user_connected(id))
        return PLUGIN_CONTINUE
    if(cs_get_user_team(id)==CS_TEAM_SPECTATOR)
        return PLUGIN_CONTINUE
    spawn(id)
    return PLUGIN_CONTINUE
}
public check_model(id)
{
    if(get_cvar_num("sv_respawn")!=1)
        return PLUGIN_CONTINUE
    if(!is_user_connected(id) || is_user_alive(id))
        return PLUGIN_CONTINUE
    new model[32]
    cs_get_user_model(id,model,31)
    if(containi(model,"urban")!=-1 || containi(model,"terror")!=-1 || containi(model,"leet")!=-1 || containi(model,"arctic")!=-1 || containi(model,"gsg")!=-1 || containi(model,"gign")!=-1 || containi(model,"sas")!=-1 || containi(model,"guerilla")!=-1 || containi(model,"vip")!=-1)
    {
        set_task(0.5,"player_spawn",id)
        set_task(0.7,"player_spawn",id)
    }
    return PLUGIN_CONTINUE
}


Отредактировал: imba, - 16.8.2010, 22:13


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 17.8.2010, 6:37
Сообщение #3
Стаж: 16 лет

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

гы я себе сделал просто заходит тело на серв если мертв пару сек тогда /respawn пишет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 5Kirill5
сообщение 17.8.2010, 11:05
Сообщение #4
Стаж: 17 лет

Сообщений: 22
Благодарностей: 2
Полезность: 69

cs-portal,, не очень удобно постоянно писать /respawn, когда играешь на knife сервере.

Отредактировал: 5Kirill5, - 17.8.2010, 11:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 23.8.2010, 17:54
Сообщение #5
Стаж: 16 лет

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

не ты не понял через set_task задаешь функцию а в ней уже client_cmd respawn но я ашл на етом сайте нормальный плагин респауна .... доволен как слон. рспаунит норм игроков которые токо что зашли.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 2.1.2013, 23:55
Сообщение #6


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

cs-portal есть данный плагин?)


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 3.1.2013, 9:46
Сообщение #7
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Как то так :

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <fun>

public plugin_init()
{
register_plugin("Respawn", "0.1", "Ghost")
}

public client_connect(id)
{
set_task(5.0, "resp", id)
}

public resp(id)
{
spawn(id)
}


или :
Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

public plugin_init()
{
register_plugin("Respawn", "0.1", "Ghost")
}

public client_connect(id)
{
set_task(5.0, "resp", id)
}

public resp(id)
{
ExecuteHam(Ham_CS_RoundRespawn, id)
}


Второй вариант получше должен быть, я не тестил.

Отредактировал: Nickk, - 3.1.2013, 9:57
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 14:14
Сообщение #8


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Цитата(Nickk @ 3.1.2013, 9:46) *
Как то так :

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <fun>

public plugin_init()
{
register_plugin("Respawn", "0.1", "Ghost")
}

public client_connect(id)
{
set_task(5.0, "resp", id)
}

public resp(id)
{
spawn(id)
}


или :
Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

public plugin_init()
{
register_plugin("Respawn", "0.1", "Ghost")
}

public client_connect(id)
{
set_task(5.0, "resp", id)
}

public resp(id)
{
ExecuteHam(Ham_CS_RoundRespawn, id)
}


Второй вариант получше должен быть, я не тестил.



Ни одно из них не работает)


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 3.1.2013, 14:47
Сообщение #9
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

dantistnubo,
быть этого не может.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 15:50
Сообщение #10


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Цитата(Orty_Hart @ 3.1.2013, 15:47) *
dantistnubo,
быть этого не может.


Ну я уменьшил таск на 0.5 дело пошло,но вот когда бывает меняешь команду,то ты всегда мертвый. И не всегда срабатывает при заходе.


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 3.1.2013, 16:01
Сообщение #11


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

dantistnubo,
Скажи конкретно, что тебе нужно? Умер - возродился; зашел на сервер - возродился?

Отредактировал: AndrewZ, - 3.1.2013, 16:01


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 16:09
Сообщение #12


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Когда игрок заходит на сервер то он часто бывает мертвым,и ждать можно бесконечно пока раза 3-4 не перезайти.Так же при смене команды тоже мертвый и приходится перезаходить. Поставил подобный плагин,но он 2 раза спавнит игроков,что постоянно отвлекает.Игрок появился на респе и через 1 сек уже на др.спавне(просто отвлекает сильно)
Есть что то подобное,что исправит это?
Зашел и тут же играешь,умер 1 раз спавнулся и играешь дальше.

Отредактировал: dantistnubo, - 3.1.2013, 16:09


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 3.1.2013, 16:16
Сообщение #13


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Код
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN        "Respawn Everyone"
#define VERSION        "0.1"
#define AUTHOR        "AndrewZ"

new gMaxPlayers

public plugin_init()
{
    register_plugin( PLUGIN, VERSION, AUTHOR )
    
    gMaxPlayers = get_maxplayers()
    
    set_task( 3.0, "respawn_everyone", _, _, _, "b" )
}

public respawn_everyone()
{
    for( new j = 1; j <= gMaxPlayers; j ++ )
    {
        if( !is_user_alive( j ) )
        {
            if( get_user_team( j ) & ( 1 | 2 ) )
            {
                ExecuteHamB( Ham_CS_RoundRespawn, j )
            }
        }
    }
}


не тестировал. респавнит любого кт или т, если он не жив, каждые 3 секунды


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 3.1.2013, 16:22
Сообщение #14


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

тебя там за 3 минуты раки съели?


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 16:32
Сообщение #15


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Цитата(AndrewZ @ 3.1.2013, 17:16) *
Код
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN        "Respawn Everyone"
#define VERSION        "0.1"
#define AUTHOR        "AndrewZ"

new gMaxPlayers

public plugin_init()
{
    register_plugin( PLUGIN, VERSION, AUTHOR )
    
    gMaxPlayers = get_maxplayers()
    
    set_task( 3.0, "respawn_everyone", _, _, _, "b" )
}

public respawn_everyone()
{
    for( new j = 1; j <= gMaxPlayers; j ++ )
    {
        if( !is_user_alive( j ) )
        {
            if( get_user_team( j ) & ( 1 | 2 ) )
            {
                ExecuteHamB( Ham_CS_RoundRespawn, j )
            }
        }
    }
}


не тестировал. респавнит любого кт или т, если он не жив, каждые 3 секунды


Спасибо проверим)


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 16:38
Сообщение #16


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Спавны то он дает,но вот опять по 2 раза. 1 раз всегда на респе а через 1 сек на рандомном.

На каждой карте есть тюрьма(как можно сделать так что бы 1 спавн был именно там,а 2 уже рандомно за счет плагина csdm
Просто 1 спавн всегда происходит на респе и это жесть как отвлекает.

Да и set_task изменил на 0.5 так как при 3 сек давался баг ты оживал, но как буд то в спектаторе)

Отредактировал: dantistnubo, - 3.1.2013, 16:40


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 3.1.2013, 16:42
Сообщение #17


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

dantistnubo,
Он не может респавнить два раза. Наверно еще какой-то плагин вмешивается.

Цитата
Да и set_task изменил на 0.5 так как при 3 сек давался баг ты оживал, но как буд то в спектаторе)

бред, там проверка на команду, он не может респавнить если ты в спектаторах. Ты просто увеличил нагрузку уменьшив таск.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 16:45
Сообщение #18


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Цитата(AndrewZ @ 3.1.2013, 17:42) *
dantistnubo,
Он не может респавнить два раза. Наверно еще какой-то плагин вмешивается.


бред, там проверка на команду, он не может респавнить если ты в спектаторах. Ты просто увеличил нагрузку уменьшив таск.


Ну смотри:

У меня стоит рандомные спавны.Спавнит 1 раз где угодно.
А с твоим или другим подобным плагином дает + 1 спавн и того 2 раза)


Если можно как то сделать первый спавн не на респе,а именно в команте(тюрьма) Ну раньше за килл своего помещали в отдельное помещение на карте. De_fust2 за ящики,de_aztec под текстурами и т.д.


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 3.1.2013, 16:46
Сообщение #19


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

dantistnubo,
пропиши в plugins.ini мой плагин ниже того, который делает еще спавн

Отредактировал: AndrewZ, - 3.1.2013, 16:46


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexan23
сообщение 3.1.2013, 16:48
Сообщение #20


Стаж: 14 лет
Город: Рязань

Сообщений: 1404
Благодарностей: 624
Полезность: 803

Цитата(AndrewZ @ 3.1.2013, 17:42) *
dantistnubo,
Он не может респавнить два раза. Наверно еще какой-то плагин вмешивается.


бред, там проверка на команду, он не может респавнить если ты в спектаторах. Ты просто увеличил нагрузку уменьшив таск.


Ну почему когда я отключаю твой или подобный плагин то спавнит 1 раз) Стоит только совместить то 2 раза. Ставил плагин где было 2 раза прописан таск,то он спавнил аж 3 раза.

Цитата(AndrewZ @ 3.1.2013, 17:46) *
dantistnubo,
пропиши в plugins.ini мой плагин ниже того, который делает еще спавн


Пробовал я вверху и внизу

По идеи твой плагин дает команду на спавн,а он стандартный то есть игрок спавнится на респе.А у меня стоит функция - спавн в рандомных местах от сюда и 2 спавна.


Антискука xD [WoRlD] ® 2010-2017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: