發新話題
打印

顯示誰人扔出膽汁問題

[Close]

顯示誰人扔出膽汁問題

唔知點解點樣改都係只要有人扔出膽汁,都會顯示係我扔
但明明係由第二個人扔


public OnPluginStart()
{
    HookEvent("player_now_it", Event_NowVomit);
}

public Event_NowVomit(Handle:event, const String:name[], bool:dontBroadcast)
{
    new thrower = GetClientOfUserId(GetEventInt(event, "attacker"));
    new victim = GetClientOfUserId(GetEventInt(event, "userid"));

    if (IsClientInGame(thrower) && !IsFakeClient(thrower) && IsClientInGame(victim) && !IsFakeClient(victim) && !GetEventBool(event, "by_boomer"))
    {
        PrintToChatAll("\x04玩家 \x05%N \x01扔出膽汁", thrower, victim);
    }
}

各位有冇方法可以點執?萬分感激

[ 本帖最後由 dogsithk 於 2015-4-21 13:32 編輯 ]
HKG Extreme X

TOP

引用:
原帖由 dogsithk 於 2015-4-21 13:29 發表
唔知點解點樣改都係只要有人扔出膽汁,都會顯示係我扔
但明明係由第二個人扔


public OnPluginStart()
{
    HookEvent("player_now_it", Event_NowVomit);
}

public Event_NowVomit(Handle:event, const String ...
你用錯o左,唔係victim, 應該係用thrower
(咦?呢個咁用既咩???一陣改下先,thx)
Laputa群主

TOP

回復 1# 的帖子

更正少少…
呢個唔係顯示邊個扔出膽汁
而家邊個中boomer既event黎…
Laputa群主

TOP

引用:
原帖由 柏斯 於 2015-4-22 10:55 發表
更正少少…
呢個唔係顯示邊個扔出膽汁
而家邊個中boomer既event黎…
我search過啲event之中好似最接近已經係依一個..
但係我見過有個場係可以整到一個咁既插件,不過唔記得係邊個場
以你功力有冇咩頭緒
HKG Extreme X

TOP

引用:
原帖由 dogsithk 於 2015-4-22 16:34 發表
我search過啲event之中好似最接近已經係依一個..
但係我見過有個場係可以整到一個咁既插件,不過唔記得係邊個場
以你功力有冇咩頭緒
其實我睇過成個list
都唔覺有…

不過workaround唔係冇方法
只係煩同埋怕太大loading先唔做

其實boom汁同pipe bomb都係weapon類
可以試下用weapon_fire event去搵
不過我當時諗到:如果12個人用輕機,每一粒子彈都計一個weapon_fire event既話…
結果冇做…
Laputa群主

TOP

回復 5# 的帖子

其實server本身就無限hook(執行一次動作就hook 3次OnPlayerRunCmd)...所以柏斯你無須顧慮黎個。遊戲事件hook屬於事件被動hook,吾會太影響server本身,相反,小海既榴彈多連發插件就主動調用左無限hook,都吾會太影響server本身。其實我之前幫朋友寫既丟膽汁插件就係用fire event,加上item id就可以做出來。不過插件本身要絕對完善,插件運作過程就要寫得比較煩瑣。
如果無記錯,燃燒彈ID = 13(默認有event);
膽汁ID= 25;
土管炸彈ID = 14;

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
public Plugin:myinfo =
{
name    = "L4D2_Tips",
author    = "MicroLeo",
description  = "Tips",
version   = "1.0",
url    = "N/A"
}
public OnPluginStart()
{
HookEvent("player_now_it", Event_NowVomit,EventHookMode_Post);
}
public Action:Event_NowVomit(Handle:event, const String:name[], bool:dontBroadcast)
{
new thrower = GetClientOfUserId(GetEventInt(event, "attacker"));
//new victim = GetClientOfUserId(GetEventInt(event, "victim")); //主要顯示丟膽汁玩家,受害者無必要。
if(thrower>0&&thrower<=MaxClients)
{
  if (IsClientInGame(thrower))
  {
   if(!GetEventBool(event, "by_boomer") && GetClientTeam(thrower)==2)
   {
    //PrintToChatAll("\x04玩家 \x05%N \x01扔出膽汁", thrower, victim); //問題代碼。一個%N通配2個client。只通配成功thrower.
    PrintToChatAll("\x01玩家 \x04%N \x01扔出膽汁", thrower);
   }
  }
}
}

以上代碼未測試過。自己測試

[ 本帖最後由 MicroLeo 於 2015-4-27 02:08 編輯 ]

TOP

發新話題