清除地上武器寫法?

Home Home
引用 | 編輯 n5427114
2014-07-26 22:39
樓主
推文 x0
請問清除地上武器寫法怎麼寫?

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <xs>
#include <fakemeta>


new cvar_removedropped


public plugin_init()
{
    register_plugin("remove_dropper","1.0beta","Anniversary04")
  register_forward(FM_SetModel, "fw_SetModel"
   cvar_removedropped = register_cvar("remove_dropped", "15.0")
}


public fw_SetModel(entity, const model[])
{
  if (strlen(model) < 8)
    return;
 
  if (get_pcvar_float(cvar_removedropped) > 0.0)
  {    
    static classname[10]
    pev(entity, pev_classname, classname, charsmax(classname))
   
    if (equal(classname, "weaponbox"))
    set_pev(entity, pev_nextthink, get_gametime() + get_pcvar_float(cvar_removedropped))
  }
}

冒似寫會無法反編, 而且地上C4好像會被清到..

有辦法分主武一個時間,小槍一個時間清除嗎?

獻花 x0
引用 | 編輯 op47
2014-07-27 16:21
1樓
  
下面是引用 n5427114 於 2014-07-26 22:39 發表的 清除地上武器寫法?: 到引言文
請問清除地上武器寫法怎麼寫?
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <xs>
.......



FM_SetModel 有帶 const model[] 的變量, 自己用模組名判斷就行

獻花 x0
引用 | 編輯 n5427114
2014-07-27 22:03
2樓
  
上面這段沒有辦法正編...

獻花 x0
引用 | 編輯 op47
2014-07-27 22:55
3樓
  
register_forward(FM_SetModel, "fw_SetModel"
register_forward(FM_SetModel, "fw_SetModel")

獻花 x0
引用 | 編輯 n5427114
2014-07-28 13:21
4樓
  
 不是這個問題。

獻花 x0
引用 | 編輯 op47
2014-07-28 13:50
5樓
  
下面是引用 n5427114 於 2014-07-28 13:21 發表的 : 到引言文
 不是這個問題。

是你sma格式的問題(SMA 換行問題) , 也許你是C&P, 不過我想你也最好參考這個段落:
Indentation, Tabbing and Spacing

Tabbing should always be done whenever you open a code block (which will be discussed more in detail later). A standard tab is either done using the "Tab" key or using 4 spaces. Less commonly, people use 1, 3 or 8 spaces for their tabs, but this is very rare and generally frowned upon. Almost everyone uses the "Tab" key because then other people can set their tab-size higher or lower in their text editors.

There are also many styles of spacing, but I believe the best (despite my not using it personally) is to add a space whenever you put a parameter in brackets, after a comma, immediately after a condition/loop keyword and before/after any operators which take two parameters on the left and right. For example:



if ( !cmd_accessidlevelcid ) )  
... or...


for ( new i10i++ )  
This allows you to easily distinguish functions from conditions/loops and also allows you to easily pick out parameters, operators, etc.

This is by no means standard and is highly up for debate, but to me this makes the most logical sense and is what I would use if I had the option of immediately wiping my habits and picking a new set of them. I would, however, advise you to always add spaces between operators with two parameters and after commas.

You may also consider adding two carriage returns as opposed to one between functions as it may make them easier to read. This is by no means a convention but I recommend it personally.


ACC. TO: https://forums.alliedmods.net/showthread.php?t=85274

獻花 x0
引用 | 編輯 岳岳
2014-07-28 13:50
6樓
  
下面是引用 n5427114 於 2014-07-28 13:21 發表的 : 到引言文
 不是這個問題。



少個誇號就會不能編譯了.....少一個差很多


可以的話最好也把編譯錯誤的訊息貼上來

獻花 x0
引用 | 編輯 n5427114
2014-07-28 19:39
7樓
  
error 029 invalid expression assumed zero

那個刮號只是沒複製上去,插件內沒有這個問題

獻花 x0
引用 | 編輯 n5427114
2014-07-28 19:45
8樓
  
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <xs>
#include <fakemeta>
#include <fun>
#include <engine>
#include <hamsandwich>

const HideWeapon_Flags = 1
new cvar_removedropped
new g_time[33]

public plugin_init()
{
       register_plugin("amx_respawn","2.0beta","Tonyyoung")
    register_forward(FM_SetModel, "fw_SetModel")
    RegisterHam(Ham_Spawn, "player", "fw_Spawn_Post", 1)
       cvar_removedropped = register_cvar("remove_dropped", "15.0")
}

public fw_Spawn_Post(id)
{
    if (is_user_alive(id) && is_user_connected(id))
    {
        cs_set_user_money(id, cs_get_user_money(id) + 500)
    }
}

public fw_SetModel(entity, const model[])
{
    if (!pev_valid(entity)) return FMRES_IGNORED
    
    if (strlen(model) < 8) return FMRES_IGNORED;
    
    new ent_classname[32]
    pev(entity, pev_classname, ent_classname, charsmax(ent_classname))
    if (equal(ent_classname, "weaponbox"))
    {
        set_pev(entity, pev_nextthink, get_gametime() + g_weapons_stay)
        return FMRES_IGNORED
    }
    return FMRES_IGNORED
}

sma 在下面

獻花 x0
引用 | 編輯 n5427114
2014-07-28 19:47
9樓
  
源碼在這供各位參考

本帖包含附件
檔名: zip respawn_money.rar   (2022-06-09 14:21 / 1 KB)   下載次數:5


獻花 x0
引用 | 編輯 op47
2014-07-29 00:09
10樓
  
下面是引用 n5427114 於 2014-07-28 19:47 發表的 : 到引言文
源碼在這供各位參考



跟你說了是換行的問題, 也給了篇文章你看, 竟然也察覺不到問題所在? 即使察覺不到, 那你有沒有把SMA嘗試重新換行? 顯然地沒有.
我看到的是這樣子:
複製程式
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <xs>
#include <fakemeta>
#include <fun>
#include <engine>
#include <hamsandwich>


const HideWeapon_Flags = 1
new cvar_removedropped
new g_time[33]


public plugin_init() 
{ 
    register_plugin("amx_respawn","2.0beta","Tonyyoung") 
�@�@�@�@register_forward(FM_SetModel, "fw_SetModel")
 RegisterHam(Ham_Spawn, "player", "fw_Spawn_Post", 1)
  �@    cvar_removedropped = register_cvar("remove_dropped", "15.0") 
}


public fw_Spawn_Post(id)
{
 if (is_user_alive(id) && is_user_connected(id))
 {
 cs_set_user_money(id, cs_get_user_money(id) + 500)
 }
}


public fw_SetModel(entity, const model[])
{
 if (!pev_valid(entity)) return FMRES_IGNORED
 
 if (strlen(model) < 8) return FMRES_IGNORED;
 
 new ent_classname[32]
 pev(entity, pev_classname, ent_classname, charsmax(ent_classname))
 if (equal(ent_classname, "weaponbox"))
 {
 set_pev(entity, pev_nextthink, get_gametime() + g_weapons_stay)
 return FMRES_IGNORED
 }
 return FMRES_IGNORED
}


獻花 x0
引用 | 編輯 n5427114
2014-07-29 10:53
11樓
  
下面是引用 op47 於 2014-07-29 00:09 發表的 : 到引言文

跟你說了是換行的問題, 也給了篇文章你看, 竟然也察覺不到問題所在? 即使察覺不到, 那你有沒有把SMA嘗試重新換行? 顯然地沒有.
我看到的是這樣子:
[code]#include <amxmodx>
.......

那篇文章我有看,SMA也換行好了,只是那個時候還是無法正編,所以就上傳修改前的SMA了。

獻花 x0
引用 | 編輯 n5427114
2014-07-29 11:38
12樓
  
清除模組的部分判斷是要用 CSW_GLOCK18 還是 weapon_glock18 ?

獻花 x0
引用 | 編輯 op47
2014-07-29 13:21
13樓
  
下面是引用 n5427114 於 2014-07-29 11:38 發表的 : 到引言文
清除模組的部分判斷是要用 CSW_GLOCK18 還是 weapon_glock18 ?

是w_glock18.mdl


if (equal(model[7], "w_glock18.mdl)) ....

獻花 x0
引用 | 編輯 n5427114
2014-07-29 20:20
14樓
  
下面是引用 op47 於 2014-07-29 13:21 發表的 : 到引言文


是w_glock18.mdl


if (equal(model[7], "w_glock18.mdl)) ....

如果數個模型的話呢?

獻花 x0