[求助]我用多年菜鸟的amxx1.6汉化增强版的问题
我用的是多年菜鸟的amxx1.6汉化增强版,前几天在stats.ini中开启了LastMan,发现汉化不完全,显示为:player (100 HP) vs. 3 TERRORISTS:现在全部希望都在你身上!我试着改miscstats.txt,但没用,就试着改源码,但TERRORISTS和CTS始终没改过来,高手们帮帮我吧!谢谢!下面是源码/* AMX Mod X
* Misc. Stats Plugin
*
* by the AMX Mod X Development Team
*originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*This program is free software; you can redistribute it and/or modify it
*under the terms of the GNU General Public License as published by the
*Free Software Foundation; either version 2 of the License, or (at
*your option) any later version.
*
*This program is distributed in the hope that it will be useful, but
*WITHOUT ANY WARRANTY; without even the implied warranty of
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*General Public License for more details.
*
*You should have received a copy of the GNU General Public License
*along with this program; if not, write to the Free Software Foundation,
*Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*In addition, as a special exception, the author gives permission to
*link the code of this program with the Half-Life Game Engine ("HL
*Engine") and Modified Game Libraries ("MODs") developed by Valve,
*L.L.C ("Valve"). You must obey the GNU General Public License in all
*respects for all of the code used other than the HL Engine and MODs
*from Valve. If you modify this file, you may extend this exception
*to your version of the file, but you are not obligated to do so. If
*you do not wish to do so, delete this exception statement from your
*version.
*/
#include <amxmodx>
#include <csx>
public MultiKill
public MultiKillSound
public BombPlanting
public BombDefusing
public BombPlanted
public BombDefused
public BombFailed
public BombPickUp
public BombDrop
public BombCountVoice
public BombCountDef
public BombReached
public ItalyBonusKill
public EnemyRemaining
public LastMan
public KnifeKill
public KnifeKillSound
public GrenadeKill
public GrenadeSuicide
public HeadShotKill
public HeadShotKillSound
public RoundCounterSound
public RoundCounter
public KillingStreak
public KillingStreakSound
public DoubleKill
public DoubleKillSound
public PlayerName
public FirstBloodSound
new g_streakKills
new g_multiKills
new g_C4Timer
new g_Defusing
new g_Planter
new Float:g_LastOmg
new g_LastAnnounce
new g_roundCount
new Float:g_doubleKill
new g_doubleKillId
new g_friend
new g_firstBlood
new g_MultiKillMsg[] =
{
"MULTI_MSG",
"ULTRA_MSG",
"SPREE_MSG",
"RAMPAGE_MSG" ,
"UNSTOPPABLE_MSG",
"MONSTER_MSG",
"GODLIKE_MSG"
}
new g_Sounds[] =
{
"multikill",
"ultrakill",
"killingspree",
"rampage",
"unstoppable",
"monsterkill",
"godlike"
}
new g_KillingMsg[] =
{
"MULTI_SMALL",
"ULTRA_SMALL",
"SPREE_SMALL",
"RAMPAGE_SMALL",
"UNSTOPPABLE_SMALL",
"MONSTER_SMALL",
"GODLIKE_SMALL"
}
new g_KinfeMsg[] =
{
"KNIFE_MSG_1",
"KNIFE_MSG_2",
"KNIFE_MSG_3",
"KNIFE_MSG_4"
}
new g_LastMessages[] =
{
"LAST_MSG_1",
"LAST_MSG_2",
"LAST_MSG_3",
"LAST_MSG_4"
}
new g_HeMessages[] =
{
"HE_MSG_1",
"HE_MSG_2",
"HE_MSG_3",
"HE_MSG_4"
}
new g_SHeMessages[] =
{
"SHE_MSG_1",
"SHE_MSG_2",
"SHE_MSG_3",
"SHE_MSG_4"
}
new g_HeadShots[] =
{
"HS_MSG_1",
"HS_MSG_2",
"HS_MSG_3",
"HS_MSG_4",
"HS_MSG_5",
"HS_MSG_6",
"HS_MSG_7"
}
new g_teamsNames[] =
{
"TERRORIST",
"CT",
"TERRORISTS",
"CTS"
}
public plugin_init()
{
register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("miscstats.txt")
register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
register_event("RoundTime", "eNewRound", "bc")
register_event("StatusValue", "setTeam", "be", "1=1")
register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
new mapname
get_mapname(mapname, 31)
if (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5))
{
register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
}
else if (equali(mapname, "cs_italy"))
{
register_event("23", "chickenKill", "a", "1=108", /*"12=106", */ "15=4")
register_event("23", "radioKill", "a", "1=108", /*"12=294", */ "15=2")
}
}
public plugin_cfg()
{
new g_addStast[] = "amx_statscfg add ^"%s^" %s"
server_cmd(g_addStast, "MultiKill", "MultiKill")
server_cmd(g_addStast, "MultiKillSound", "MultiKillSound")
server_cmd(g_addStast, "Bomb Planting", "BombPlanting")
server_cmd(g_addStast, "Bomb Defusing", "BombDefusing")
server_cmd(g_addStast, "Bomb Planted", "BombPlanted")
server_cmd(g_addStast, "Bomb Defuse Succ.", "BombDefused")
server_cmd(g_addStast, "Bomb Def. Failure", "BombFailed")
server_cmd(g_addStast, "Bomb PickUp", "BombPickUp")
server_cmd(g_addStast, "Bomb Drop", "BombDrop")
server_cmd(g_addStast, "Bomb Count Down", "BombCountVoice")
server_cmd(g_addStast, "Bomb Count Down (def)", "BombCountDef")
server_cmd(g_addStast, "Bomb Site Reached", "BombReached")
server_cmd(g_addStast, "Italy Bonus Kill", "ItalyBonusKill")
server_cmd(g_addStast, "Last Man", "LastMan")
server_cmd(g_addStast, "Knife Kill", "KnifeKill")
server_cmd(g_addStast, "Knife Kill Sound", "KnifeKillSound")
server_cmd(g_addStast, "Grenade Kill", "GrenadeKill")
server_cmd(g_addStast, "Grenade Suicide", "GrenadeSuicide")
server_cmd(g_addStast, "HeadShot Kill", "HeadShotKill")
server_cmd(g_addStast, "HeadShot Kill Sound", "HeadShotKillSound")
server_cmd(g_addStast, "Round Counter", "RoundCounter")
server_cmd(g_addStast, "Round Counter Sound", "RoundCounterSound")
server_cmd(g_addStast, "Killing Streak", "KillingStreak")
server_cmd(g_addStast, "Killing Streak Sound", "KillingStreakSound")
server_cmd(g_addStast, "Enemy Remaining", "EnemyRemaining")
server_cmd(g_addStast, "Double Kill", "DoubleKill")
server_cmd(g_addStast, "Double Kill Sound", "DoubleKillSound")
server_cmd(g_addStast, "Player Name", "PlayerName")
server_cmd(g_addStast, "First Blood Sound", "FirstBloodSound")
}
public client_putinserver(id)
{
g_multiKills = {0, 0}
g_streakKills = {0, 0}
}
public client_death(killer, victim, wpnindex, hitplace, TK)
{
if (wpnindex == CSW_C4)
return
new headshot = (hitplace == HIT_HEAD) ? 1 : 0
new selfkill = (killer == victim) ? 1 : 0
if (g_firstBlood)
{
g_firstBlood = 0
if (FirstBloodSound)
play_sound("misc/firstblood")
}
if ((KillingStreak || KillingStreakSound) && !TK)
{
g_streakKills++
g_streakKills = 0
if (!selfkill)
{
g_streakKills++
g_streakKills = 0
new a = g_streakKills - 3
if ((a > -1) && !(a % 2))
{
new name
get_user_name(killer, name, 31)
if ((a >>= 1) > 6)
a = 6
if (KillingStreak)
{
set_hudmessage(0, 100, 255, 0.05, 0.55, 2, 0.02, 6.0, 0.01, 0.1, 3)
show_hudmessage(0,"%L",LANG_PLAYER,g_KillingMsg, name)
}
if (KillingStreakSound)
{
new file
format(file, 32, "misc/%s", g_Sounds)
play_sound(file)
}
}
}
}
if (MultiKill || MultiKillSound)
{
if (!selfkill && !TK)
{
g_multiKills++
g_multiKills += headshot
new param
param = killer
param = g_multiKills
set_task(4.0 + float(param), "checkKills", 0, param, 2)
}
}
if (EnemyRemaining)
{
new ppl, pplnum = 0
new team = get_user_team(victim) - 1
if (team >= 0 && team < 4)
get_players(ppl, pplnum, "e", g_teamsNames)
if (pplnum)
{
new eppl, epplnum
if (team >= 0 && team < 4)
{
get_players(eppl, epplnum, "ae", g_teamsNames)
if (epplnum)
{
new message, team_name
set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, 3)
for (new a = 0; a < pplnum; ++a)
{
format(team_name, 31, "%L", ppl, (epplnum == 1) ? g_teamsNames : g_teamsNames)
format(message, 127, "%L", ppl, "REMAINING", epplnum, team_name)
show_hudmessage(ppl, message)
}
}
}
}
}
if (LastMan)
{
new cts, ts, ctsnum, tsnum
get_players(cts, ctsnum, "ae", g_teamsNames)
get_players(ts, tsnum, "ae", g_teamsNames)
if (ctsnum == 1 && tsnum == 1)
{
new ctname, tname
get_user_name(cts, ctname, 31)
get_user_name(ts, tname, 31)
set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, 3)
show_hudmessage(0, "%s vs. %s", ctname, tname)
play_sound("misc/maytheforce")
}
else if (!g_LastAnnounce)
{
new oposite = 0, team = 0
if (ctsnum == 1 && tsnum > 1)
{
g_LastAnnounce = cts
oposite = tsnum
team = 0
}
else if (tsnum == 1 && ctsnum > 1)
{
g_LastAnnounce = ts
oposite = ctsnum
team = 1
}
if (g_LastAnnounce)
{
new name
get_user_name(g_LastAnnounce, name, 31)
set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, 3)
show_hudmessage(0, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames, (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages)
if (!is_user_connecting(g_LastAnnounce))
client_cmd(g_LastAnnounce, "spk misc/oneandonly")
}
}
}
if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
{
if (KnifeKill)
{
new killer_name, victim_name
get_user_name(killer, killer_name, 31)
get_user_name(victim, victim_name, 31)
set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0, "%L", LANG_PLAYER, g_KinfeMsg, killer_name, victim_name)
}
if (KnifeKillSound)
play_sound("misc/humiliation")
}
if (wpnindex == CSW_HEGRENADE && (GrenadeKill || GrenadeSuicide))
{
new killer_name, victim_name
get_user_name(killer, killer_name, 32)
get_user_name(victim, victim_name, 32)
set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, 1)
if (!selfkill)
{
if (GrenadeKill)
show_hudmessage(0, "%L", LANG_PLAYER, g_HeMessages, killer_name, victim_name)
}
else if (GrenadeSuicide)
show_hudmessage(0, "%L", LANG_PLAYER, g_SHeMessages, victim_name)
}
if (headshot && (HeadShotKill || HeadShotKillSound))
{
if (HeadShotKill && wpnindex)
{
new killer_name, victim_name, weapon_name, message, players, pnum
xmod_get_wpnname(wpnindex, weapon_name, 31)
get_user_name(killer, killer_name, 31)
get_user_name(victim, victim_name, 31)
get_players(players, pnum, "c")
for (new i = 0; i < pnum; i++)
{
format(message, 127, "%L", players, g_HeadShots)
replace(message, 127, "$vn", victim_name)
replace(message, 127, "$wn", weapon_name)
replace(message, 127, "$kn", killer_name)
set_hudmessage(100, 100, 255, -1.0, 0.29, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(players, message)
}
}
if (HeadShotKillSound)
{
client_cmd(killer, "spk misc/headshot")
client_cmd(victim, "spk misc/headshot")
}
}
if ((DoubleKill || DoubleKillSound) && !selfkill)
{
new Float:nowtime = get_gametime()
if (g_doubleKill == nowtime && g_doubleKillId == killer)
{
if (DoubleKill)
{
new name
get_user_name(killer, name, 31)
set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, 3)
show_hudmessage(0, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
}
if (DoubleKillSound)
play_sound("misc/doublekill")
}
g_doubleKill = nowtime
g_doubleKillId = killer
}
}
public hideStatus(id)
{
if (PlayerName)
{
set_hudmessage(0, 0, 0, 0.0, 0.0, 0, 0.0, 0.01, 0.0, 0.0, 4)
show_hudmessage(id, "")
}
}
public setTeam(id)
g_friend = read_data(2)
public showStatus(id)
{
if (PlayerName)
{
new name, pid = read_data(2)
get_user_name(pid, name, 31)
new color1 = 0, color2 = 0
if (get_user_team(pid) == 1)
color1 = 255
else
color2 = 255
if (g_friend == 1) // friend
{
new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo)
new wpnname
if (wpnid)
xmod_get_wpnname(wpnid, wpnname, 31)
set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, 4)
show_hudmessage(id, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
} else {
set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, 4)
show_hudmessage(id, name)
}
}
}
public eNewRound()
{
if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0))
{
g_firstBlood = 1
g_C4Timer = 0
++g_roundCount
if (RoundCounter)
{
set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
}
if (RoundCounterSound)
play_sound("misc/prepare")
if (KillingStreak)
{
new appl, ppl, i
get_players(appl, ppl, "ac")
for (new a = 0; a < ppl; ++a)
{
i = appl
if (g_streakKills >= 2)
client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills)
else if (g_streakKills >= 2)
client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills)
}
}
}
}
public eRestart()
{
eEndRound()
g_roundCount = 0
g_firstBlood = 1
}
public eEndRound()
{
g_C4Timer = -2
g_LastOmg = 0.0
remove_task(8038)
g_LastAnnounce = 0
}
public checkKills(param[])
{
new id = param
new a = param
if (a == g_multiKills)
{
a -= 3
if (a > -1)
{
if (MultiKill)
{
new name
get_user_name(id, name, 31)
set_hudmessage(255, 0, 100, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2)
if (a > 6)
a = 6
new temp
format(temp,63,"%L %d %L (%d %L)",LANG_SERVER,"WITH",g_multiKills,LANG_SERVER,"KILLS",g_multiKills,LANG_SERVER,"HS")
show_hudmessage(0,"%L",LANG_PLAYER,g_MultiKillMsg,name,temp)
}
if (MultiKillSound)
{
new sound
format(sound, 23, "misc/%s", g_Sounds)
play_sound(sound)
}
}
g_multiKills = {0, 0}
}
}
public chickenKill()
if (ItalyBonusKill)
announceEvent(0, "KILLED_CHICKEN")
public radioKill()
{
if (ItalyBonusKill)
announceEvent(0, "BLEW_RADIO")
}
announceEvent(id, message[])
{
new name
get_user_name(id, name, 31)
set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0, "%L", LANG_PLAYER, message, name)
}
public eBombPickUp(id)
if (BombPickUp)
announceEvent(id, "PICKED_BOMB")
public eBombDrop()
if (BombDrop)
announceEvent(g_Planter, "DROPPED_BOMB")
public eGotBomb(id)
{
g_Planter = id
if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
{
g_LastOmg = get_gametime() + 15.0
announceEvent(g_Planter, "REACHED_TARGET")
}
}
public bombTimer()
{
if (--g_C4Timer > 0)
{
if (BombCountVoice)
{
if (g_C4Timer == 30 || g_C4Timer == 20)
{
new temp
num_to_word(g_C4Timer, temp, 63)
format(temp, 63, "^"vox/%s seconds until explosion^"", temp)
play_sound(temp)
}
else if (g_C4Timer < 11)
{
new temp
num_to_word(g_C4Timer, temp, 63)
format(temp, 63, "^"vox/%s^"", temp)
play_sound(temp)
}
}
if (BombCountDef && g_Defusing)
client_print(g_Defusing, print_center, "%d", g_C4Timer)
}
else
remove_task(8038)
}
public bomb_planted(planter)
{
g_Defusing = 0
if (BombPlanted)
announceEvent(planter, "SET_UP_BOMB")
g_C4Timer = get_cvar_num("mp_c4timer")
set_task(1.0, "bombTimer", 8038, "", 0, "b")
}
public bomb_planting(planter)
if (BombPlanting)
announceEvent(planter, "PLANT_BOMB")
public bomb_defusing(defuser)
{
if (BombDefusing)
announceEvent(defuser, "DEFUSING_BOMB")
g_Defusing = defuser
}
public bomb_defused(defuser)
if (BombDefused)
announceEvent(defuser, "DEFUSED_BOMB")
public bomb_explode(planter, defuser)
if (BombFailed && defuser)
announceEvent(defuser, "FAILED_DEFU")
public play_sound(sound[])
{
new players, pnum
get_players(players, pnum, "c")
new i
for (i = 0; i < pnum; i++)
{
if (is_user_connecting(players))
continue
client_cmd(players, "spk %s", sound)
}
}
第一个vs.我改成了单挑,显示正常,把第二个vs.改成了对决,hp改成了生命值。是不是还要改别的?
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
你的修改没有错,自行编译后使用就知道效果了。:D
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
Post by 金闪闪你的修改没有错,自行编译后使用就知道效果了。
:D
改完的效果如下图,明显看出“CTS”字样,这个怎么改?谢谢!
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
也许你误会了,在E文中,多人以上就必须是CTs的。只有单人才是CT。
:D
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
先谢谢闪闪,我知道那是复数形式,我是想把CTS汉化成反恐精英(或警察),把TERRORISTS汉化成恐怖份子(或匪徒),不知如何实现。另外在miscstats.txt文件里CTS和TERRORISTS已经汉化了。在左下角可以看到“还剩X个反恐精英(或恐怖份子)”字样。
不知为何开启了LastMan,这两项就这样显示了。
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
郁闷哪!期待有人帮我!回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
难道真的没办法了?急呀回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
检查“if (LastMan)”部分代码。根据g_teamsNames返回团队代码。
当是CTS时,team=0,是TS是team=1。那么对应的g_teamsNames要如何修改呢?
:D
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
Post by 金闪闪检查“if (LastMan)”部分代码。
根据g_teamsNames返回团队代码。
当是CTS时,team=0,是TS是team=1。那么对应的g_teamsNames要如何修改呢?
:D
感谢呀!困扰我多日的问题终于解决了!真是一句话点醒梦中人啊!
回复: [求助]我用多年菜鸟的amxx1.6汉化增强版的问题
金闪闪是不是大学生啊~~~~高手~~~~小弟佩服:gogo:
页:
[1]
2