Русское сообщество по скриптингу

Заменить: dm_set_user

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Заменить: dm_set_user

Сообщение wantip01 » 06 ноя 2016, 03:07

Привет всем. Нужно убрать нативы и заменить dm на cs.
Плагин не работает из за этого.

Код: Выделить всё
[code=php]#include <amxmodx>
#include <fakemeta>
#include <engine>
#include dm_chat

/*native dm_set_user_money(id, set)
native dm_get_user_money(id)
native privilege_get(id)*/

#define Model_Flag "models/test/flag.mdl"

new g_iAllocInfoTargetg_iAllocInfoTarget2
new g_szConfigFile[128];

new 
g_CT_Flagsg_T_Flags

new g_iCvar[5]

public 
plugin_init()
{
    
register_clcmd("say !2""clcmd_test")
    
    
register_touch("Flag_Trigger""player""touch_flag")
    
    
g_iCvar[0]=register_cvar("f_time_reward""60")
    
g_iCvar[1]=register_cvar("f_reward""200")
    
g_iCvar[2]=register_cvar("f_time_capture""20")
    
    
    
set_task(get_pcvar_float(g_iCvar[0]), "Task_Reward"7738,_,_,"b")
}

public 
plugin_precache()
{
    
precache_model(Model_Flag)
}

public 
Task_Reward()
{
    new 
idreward=get_pcvar_num(g_iCvar[1])
    for (
id 0id <= 32id++)
    {
        if(!
is_user_connected(id))continue
        
reward=get_pcvar_num(g_iCvar[1])
        
        if(
fm_cs_get_user_team(id)==2&&g_CT_Flags)
        {
            
reward*=g_CT_Flags
            dm_set_user_money
(iddm_get_user_money(id)+reward)
        }
        else if(
fm_cs_get_user_team(id)==1&&g_T_Flags)
        {
            
reward*=g_T_Flags
            dm_set_user_money
(iddm_get_user_money(id)+reward)
        }
    }
}

public 
clcmd_test(id)
{
    if(
privilege_get(id)!=3) return
    new 
Float:origin[3]
    
pev(idpev_originorigin)
    
origin[2]-=7.0
    
new ent=spawn_flag(origin"Новое место")
    
Save_Flags(ent)
}

public 
plugin_cfg()
{
    
g_iAllocInfoTarget engfunc(EngFunc_AllocString"cycler_sprite")
    
g_iAllocInfoTarget2 engfunc(EngFunc_AllocString"trigger_multiple")
    
    new 
file[128]; get_localinfo("amxx_configsdir",file,63)
    
format(file127"%s/test_cvars/flags.cfg"file)
    if(
file_exists(file)) server_cmd("exec %s"file), server_exec()
    
    
load_flags()
}

public 
load_flags()
{
    new 
szMapName[32]
    
get_mapname(szMapName31)
    
strtolower(szMapName)
    
    
formatex(g_szConfigFile127"addons/amxmodx/configs/flags")
    
    if( !
dir_exists(g_szConfigFile)) 
    {
        
mkdir(g_szConfigFile)
        
format(g_szConfigFile127"%s/%s.txt"g_szConfigFileszMapName )
        return
    }
    
    
format(g_szConfigFile127"%s/%s.txt"g_szConfigFileszMapName)
    if(!
file_exists(g_szConfigFile)) 
    {
        
fopen(g_szConfigFile"at")
        return
    }
    
    new 
iFile fopeng_szConfigFile"rt" )
    if(!
iFile) return
    
    new 
x[16], y[16], z[16], szDesc[32], szData[charsmax(x) + charsmax(y) + charsmax(z) + charsmax(szDesc)]
    
    new 
Float:vOrigin[3]
    
    while(!
feof(iFile)) 
    {
        
fgets(iFileszDatacharsmax(szData))
        
trim(szData)
        
        if(!
szData[0]) continue;
        
        
parse(szDatax15y15z15szDesc31)
        
        
vOrigin[0] = str_to_float(x)
        
vOrigin[1] = str_to_float(y)
        
vOrigin[2] = str_to_float(z)
        
        
spawn_flag(vOriginszDesc)
    }
    
    
fcloseiFile )
}

Save_Flags(ent)
{
    new 
iFile fopen(g_szConfigFile"at")
    
    if(!
iFile) return
    
    new 
Float:vOrigin[3]
    
pev(entpev_originvOrigin)

    
fprintf(iFile"%f %f %f ^"Новое место^"^n"vOrigin[0], vOrigin[1], vOrigin[2])
    
fclose(iFile)
}

public 
spawn_flag(const Float:vOrigin[3], const Desc[])
{
    new 
ent engfunc(EngFunc_CreateNamedEntityg_iAllocInfoTarget);
    
    if(!
ent)return 0
    
    engfunc
(EngFunc_SetOriginentvOrigin)
    
    
entity_set_string(entEV_SZ_classname"Flag_Ent")
    
    
engfunc(EngFunc_SetModelentModel_Flag)
    
    
entity_set_size(entFloat: {0.00.00.0}, Float: {0.00.00.0})
    
    
entity_set_float(entEV_FL_framerate1.0)
    
entity_set_int(entEV_INT_sequence0)
        
entity_set_float(entEV_FL_animtimehalflife_time())
        
set_pev(entpev_body0)
        
        
entity_set_string(entEV_SZ_targetnameDesc)
        
        new 
entity engfunc(EngFunc_CreateNamedEntityg_iAllocInfoTarget2)
    
    if(!
entity)return 0
    
    engfunc
(EngFunc_SetOriginentityvOrigin)
    
    
entity_set_string(entityEV_SZ_classname"Flag_Trigger")
    
    
entity_set_size(entityFloat: {-15.0, -15.00.0}, Float: {15.015.064.0})
        
        
entity_set_int(entityEV_INT_solidSOLID_TRIGGER)
        
entity_set_int(entityEV_INT_movetypeMOVETYPE_FLY)
    
    
set_pev(entitypev_euser1ent)
    
    return 
ent
}
public 
touch_flag(entityid)
{
    new 
ent=pev(entitypev_euser1)
    
    if(
fm_cs_get_user_team(id)==pev(entpev_body))return
    
    if(
pev(entpev_iuser1))return
    
    
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
    
write_byte(2
    
write_string("dmg_shock")
    
write_byte(20)
    
write_byte(20)
    
write_byte(240)
    
message_end()
    
    
set_pev(entpev_iuser1get_pcvar_num(g_iCvar[2]))
    
    
message_begin(MSG_ONE108_id)
    
write_byte(get_pcvar_num(g_iCvar[2]))
    
write_byte(0)
    
message_end()
    
    new 
info[2]
    
info[0] = ent
    info
[1] = id
    
    set_task
(1.0"flag_refresh"ent+636info2"b")
}

public 
flag_refresh(const info[])
{
    new 
ent=info[0]
    new 
id=info[1]
    
    if(!
is_user_connected(id)){
        
remove_task(ent+636)
        
set_pev(entpev_iuser10)
        return
    }
    
    new 
Float:flOrigin[3], Float:flOrigin2[3]
    
pev(idpev_originflOrigin)
    
pev(entpev_originflOrigin2)
        
    new 
Float:flDistance get_distance_f(flOriginflOrigin2
    
    if(
flDistance>80.0||!is_user_alive(id)){
        
message_begin(MSG_ONE108_id)
        
write_byte(0)
        
write_byte(0)
        
message_end()
        
        
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
        
write_byte(0
        
write_string("dmg_shock")
        
write_byte(20)
        
write_byte(20)
        
write_byte(240)
        
message_end()
        
        
remove_task(ent+636)
        
set_pev(entpev_iuser10)
        return
    }
    
    
set_pev(entpev_iuser1pev(entpev_iuser1)-1)
    
    if(!
pev(entpev_iuser1)){
        new 
szDesc[32]
        
pev(entpev_targetnameszDesccharsmax(szDesc))
        
        if(
fm_cs_get_user_team(id)==2){
            if(
pev(entpev_body))g_T_Flags--
            
g_CT_Flags++
        }else{
            
g_T_Flags++
            if(
pev(entpev_body))g_CT_Flags--
        }
        
        
set_pev(entpev_bodyfm_cs_get_user_team(id))
        
        for(new 
i=0;i<33;i++)
        {
            if(!
is_user_connected(i)) continue
            if(
i==idcolored_print(i"!gВы!t захватили флаг !g(%s)"szDesc)
            else 
colored_print(i"!g%s!t захватили флаг !g(%s)"fm_cs_get_user_team(id)==2?"Контр Террористы":"Террористы"szDesc)
        }
        
        
remove_task(ent+636)
    }
}

stock fm_cs_get_user_team(id)
{
    if (
pev_valid(id) != 2) return 0
    
    
return get_pdata_int(id1145)
}[/
code


Объясните как правильно сделать замену. А то заменял, но ошибка при компиляции.
Аватара пользователя
wantip01
 
Сообщения: 68
Зарегистрирован: 14 авг 2016, 15:53
Благодарил (а): 7 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Заменить: dm_set_user

Сообщение RevCrew » 06 ноя 2016, 10:18

Подключить нужные инклуды надо
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <cstrike>
#include <colorchat>

/*native dm_set_user_money(id, set)
native dm_get_user_money(id)
native privilege_get(id)*/

#define colored_print(%0,%1,%2 client_print_color(%0, NORMAL,%1,%2)

#define dm_set_user_money cs_set_user_money
#define dm_get_user_money cs_get_user_money
#define Model_Flag "models/test/flag.mdl"

new g_iAllocInfoTargetg_iAllocInfoTarget2
new g_szConfigFile[128];

new 
g_CT_Flagsg_T_Flags

new g_iCvar[5]

public 
plugin_init()
{
    
register_clcmd("say !2""clcmd_test")
    
    
register_touch("Flag_Trigger""player""touch_flag")
    
    
g_iCvar[0]=register_cvar("f_time_reward""60")
    
g_iCvar[1]=register_cvar("f_reward""200")
    
g_iCvar[2]=register_cvar("f_time_capture""20")
    
    
    
set_task(get_pcvar_float(g_iCvar[0]), "Task_Reward"7738,_,_,"b")
}

public 
plugin_precache()
{
    
precache_model(Model_Flag)
}

public 
Task_Reward()
{
    new 
idreward=get_pcvar_num(g_iCvar[1])
    for (
id 0id <= 32id++)
    {
        if(!
is_user_connected(id))continue
        
reward=get_pcvar_num(g_iCvar[1])
        
        if(
fm_cs_get_user_team(id)==2&&g_CT_Flags)
        {
            
reward*=g_CT_Flags
            dm_set_user_money
(iddm_get_user_money(id)+reward)
        }
        else if(
fm_cs_get_user_team(id)==1&&g_T_Flags)
        {
            
reward*=g_T_Flags
            dm_set_user_money
(iddm_get_user_money(id)+reward)
        }
    }
}

public 
clcmd_test(id)
{
    
//if(privilege_get(id)!=3) return
    
new Float:origin[3]
    
pev(idpev_originorigin)
    
origin[2]-=7.0
    
new ent=spawn_flag(origin"Новое место")
    
Save_Flags(ent)
}

public 
plugin_cfg()
{
    
g_iAllocInfoTarget engfunc(EngFunc_AllocString"cycler_sprite")
    
g_iAllocInfoTarget2 engfunc(EngFunc_AllocString"trigger_multiple")
    
    new 
file[128]; get_localinfo("amxx_configsdir",file,63)
    
format(file127"%s/test_cvars/flags.cfg"file)
    if(
file_exists(file)) server_cmd("exec %s"file), server_exec()
    
    
load_flags()
}

public 
load_flags()
{
    new 
szMapName[32]
    
get_mapname(szMapName31)
    
strtolower(szMapName)
    
    
formatex(g_szConfigFile127"addons/amxmodx/configs/flags")
    
    if( !
dir_exists(g_szConfigFile)) 
    {
        
mkdir(g_szConfigFile)
        
format(g_szConfigFile127"%s/%s.txt"g_szConfigFileszMapName )
        return
    }
    
    
format(g_szConfigFile127"%s/%s.txt"g_szConfigFileszMapName)
    if(!
file_exists(g_szConfigFile)) 
    {
        
fopen(g_szConfigFile"at")
        return
    }
    
    new 
iFile fopeng_szConfigFile"rt" )
    if(!
iFile) return
    
    new 
x[16], y[16], z[16], szDesc[32], szData[charsmax(x) + charsmax(y) + charsmax(z) + charsmax(szDesc)]
    
    new 
Float:vOrigin[3]
    
    while(!
feof(iFile)) 
    {
        
fgets(iFileszDatacharsmax(szData))
        
trim(szData)
        
        if(!
szData[0]) continue;
        
        
parse(szDatax15y15z15szDesc31)
        
        
vOrigin[0] = str_to_float(x)
        
vOrigin[1] = str_to_float(y)
        
vOrigin[2] = str_to_float(z)
        
        
spawn_flag(vOriginszDesc)
    }
    
    
fcloseiFile )
}

Save_Flags(ent)
{
    new 
iFile fopen(g_szConfigFile"at")
    
    if(!
iFile) return
    
    new 
Float:vOrigin[3]
    
pev(entpev_originvOrigin)

    
fprintf(iFile"%f %f %f ^"Новое место^"^n"vOrigin[0], vOrigin[1], vOrigin[2])
    
fclose(iFile)
}

public 
spawn_flag(const Float:vOrigin[3], const Desc[])
{
    new 
ent engfunc(EngFunc_CreateNamedEntityg_iAllocInfoTarget);
    
    if(!
ent)return 0
    
    engfunc
(EngFunc_SetOriginentvOrigin)
    
    
entity_set_string(entEV_SZ_classname"Flag_Ent")
    
    
engfunc(EngFunc_SetModelentModel_Flag)
    
    
entity_set_size(entFloat: {0.00.00.0}, Float: {0.00.00.0})
    
    
entity_set_float(entEV_FL_framerate1.0)
    
entity_set_int(entEV_INT_sequence0)
    
entity_set_float(entEV_FL_animtimehalflife_time())
    
set_pev(entpev_body0)
        
    
entity_set_string(entEV_SZ_targetnameDesc)
        
    new 
entity engfunc(EngFunc_CreateNamedEntityg_iAllocInfoTarget2)
    
    if(!
entity)return 0
    
    engfunc
(EngFunc_SetOriginentityvOrigin)
    
    
entity_set_string(entityEV_SZ_classname"Flag_Trigger")
    
    
entity_set_size(entityFloat: {-15.0, -15.00.0}, Float: {15.015.064.0})
        
    
entity_set_int(entityEV_INT_solidSOLID_TRIGGER)
    
entity_set_int(entityEV_INT_movetypeMOVETYPE_FLY)
    
    
set_pev(entitypev_euser1ent)
    
    return 
ent
}
public 
touch_flag(entityid)
{
    new 
ent=pev(entitypev_euser1)
    
    if(
fm_cs_get_user_team(id)==pev(entpev_body))return
    
    if(
pev(entpev_iuser1))return
    
    
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
    
write_byte(2
    
write_string("dmg_shock")
    
write_byte(20)
    
write_byte(20)
    
write_byte(240)
    
message_end()
    
    
set_pev(entpev_iuser1get_pcvar_num(g_iCvar[2]))
    
    
message_begin(MSG_ONE108_id)
    
write_byte(get_pcvar_num(g_iCvar[2]))
    
write_byte(0)
    
message_end()
    
    new 
info[2]
    
info[0] = ent
    info
[1] = id
    
    set_task
(1.0"flag_refresh"ent+636info2"b")
}

public 
flag_refresh(const info[])
{
    new 
ent=info[0]
    new 
id=info[1]
    
    if(!
is_user_connected(id)){
        
remove_task(ent+636)
        
set_pev(entpev_iuser10)
        return
    }
    
    new 
Float:flOrigin[3], Float:flOrigin2[3]
    
pev(idpev_originflOrigin)
    
pev(entpev_originflOrigin2)
        
    new 
Float:flDistance get_distance_f(flOriginflOrigin2
    
    if(
flDistance>80.0||!is_user_alive(id)){
        
message_begin(MSG_ONE108_id)
        
write_byte(0)
        
write_byte(0)
        
message_end()
        
        
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
        
write_byte(0
        
write_string("dmg_shock")
        
write_byte(20)
        
write_byte(20)
        
write_byte(240)
        
message_end()
        
        
remove_task(ent+636)
        
set_pev(entpev_iuser10)
        return
    }
    
    
set_pev(entpev_iuser1pev(entpev_iuser1)-1)
    
    if(!
pev(entpev_iuser1)){
        new 
szDesc[32]
        
pev(entpev_targetnameszDesccharsmax(szDesc))
        
        if(
fm_cs_get_user_team(id)==2){
            if(
pev(entpev_body))g_T_Flags--
            
g_CT_Flags++
        }else{
            
g_T_Flags++
            if(
pev(entpev_body))g_CT_Flags--
        }
        
        
set_pev(entpev_bodyfm_cs_get_user_team(id))
        
        for(new 
i=0;i<33;i++)
        {
            if(!
is_user_connected(i)) continue
            if(
i==idclient_print_color(iNORMAL"!gВы!t захватили флаг !g(%s)"szDesc)
            else 
client_print_color(iNORMAL"!g%s!t захватили флаг !g(%s)"fm_cs_get_user_team(id)==2?"Контр Террористы":"Террористы"szDesc)
        }
        
        
remove_task(ent+636)
    }
}

stock fm_cs_get_user_team(id)
{
    if (
pev_valid(id) != 2) return 0
    
    
return get_pdata_int(id1145)
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Заменить: dm_set_user

Сообщение mega18 » 06 июл 2018, 03:01

Не вкурсе как убрать префикс [DM] в чате? А то везде этот префикс высвечивается, в модулях этого префикса нету.
Аватара пользователя
mega18
 
Сообщения: 7
Зарегистрирован: 13 май 2018, 22:12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Заменить: dm_set_user

Сообщение gamingEx » 06 июл 2018, 08:57

mega18, загляни в инклуд dm_chat.inc. Вероятно, что находится там
:dance2: :dance2: :dance2:
Аватара пользователя
gamingEx
 
Сообщения: 121
Зарегистрирован: 07 окт 2017, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Опыт программирования: Больше трех лет
Языки программирования: Swift, C++, PHP, Ruby, JS


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: sb123 и гости: 7