|
发表于 2008-3-31 17:03:47
|
显示全部楼层
|阅读模式
来自 中国–广东–珠海–香洲区
论坛有源码,老大能不能帮我提取一下,我只想要最佳杀手的,原源集成了,第一个杀人奖励和前5个杀人奖励的,第一个也可以整合到里面,但是我改了,有出错,麻烦大大们帮我看看!/* Rewarding
ver 0.1 By Zhao on 2004.12.4
*/
#include <amxmodx>
#include <cstrike>
#include <csstats>
#include <unlimited_money>
#define BIG_MONEY_INDEX 16
#define MAX_NAME_LENGTH 32
#define MAX_TEXT_LENGTH 512
#define ACCESS_LEVEL ADMIN_LEVEL_A
new playerkilled[33]
new rewards[20]={10000,15000,20000,25000,50000,88888,100000}
new g_firstblood,Round_Control
new g_random,g_roundcount
new rewardedbig,g_iRoundEndTriggered
new _tmpStr[256]
new gBonusMode = 1
new bool:gRoundStart
new gBonusCount = 0
new gBonusIndex[5] = { 0,4000,3000,2000,1000 }
public client_connect(id){
playerkilled[id]=0;
}
public ramdon_money(params[]){
new killer=params[0]
new oldamount=params[1]
new amount
new killername[32]
new random_range,randomvalue
random_range=(rewardedbig)?BIG_MONEY_INDEX:20//控制大额的奖励不会出现太多次
for(;;){
randomvalue=random(random_range)
amount=rewards[randomvalue]
if (amount!=oldamount) break;
}
get_user_name(killer,killername,31)
if (g_random>0){
g_random--
//set_hudmessage(0,255,0, -1.0, 0.2, 0, 0.1, 6.0, 0.01, 0.01, 1 )
//show_hudmessage(0,"%s最先杀敌^n____________________________^n奖励%6d美元",killername,amount)
new param[2]
param[0]=killer
param[1]=amount
set_task(0.3,"ramdon_money",0,param,1)
}else{
if(randomvalue>=BIG_MONEY_INDEX) rewardedbig=1
set_hudmessage(0,255,0, -1.0, 0.2, 0, 0.1, 6.0, 0.01, 0.01, 1 )
show_hudmessage(0,"%s最先杀敌^n____________________________^n奖励%6d美元",killername,amount)
//set_hudmessage(0,255,0,0.75,0.18,0, 1.0, 5.0, 0.1, 0.2, 1)
//set_hudmessage(0,255,0,0.05, 0.25, 0, 0.02, 6.0, 0.01, 0.1, 2)
//show_hudmessage(0,"%s最先杀敌,奖励%6d美元",killername,amount)
cs_set_user_money2(killer, cs_get_user_money2(killer)+amount)
new msg[512]
format(msg,511,"^x03%s^x01 最先杀敌,奖励^x04 %d ^x01美元",killername,amount)
client_color(0,killer,msg)
}
}
//public client_death(killer,victim,wpnindex,hitplace,TK){
public eDeathMsg(){
new killer,victim,TK
killer=read_data(1)
if(!killer) return PLUGIN_CONTINUE
victim=read_data(2)
TK=(get_user_team(killer)==get_user_team(victim))?1:0
//headshot=read_data(3)
new wpnname[4]
read_data(4,wpnname,3)
new killername[32]
//if (wpnindex==CSW_C4||TK) return PLUGIN_CONTINUE
if(equal(wpnname,"c4")||TK) return PLUGIN_CONTINUE
// new headshot = ( hitplace==HIT_HEAD ) ? 1:0
new selfkill = ( killer==victim ) ? 1:0
if (selfkill) return PLUGIN_CONTINUE
playerkilled[killer]++
if(equal(wpnname,"kni")){
cs_set_user_money2(killer, cs_get_user_money2(killer)+5000)
get_user_name(killer,killername,31)
//set_hudmessage(0,255,0,0.05,0.25,0, 0.2, 6.0, 0.1, 0.1, 1)
//set_hudmessage(0,255,0,0.75,0.18,0, 1.0, 1.0, 0.1, 0.2, 12)
//show_hudmessage(0,"小网虫玩家%s小刀杀敌,奖励5000美元",killername)
new msg[100]
format(msg,99,"^x03%s^x01小网虫玩家%s小刀杀敌,奖励^x04 5000 ^x01 美元",killername)
client_color(0,killer,msg)
//log_message("小网虫玩家%s小刀杀敌,奖励5000美元",killername)
}
if (g_firstblood){
g_firstblood=0
g_random=6
new param[2]
param[0]=killer
param[1]=0;
ramdon_money(param)
}
return PLUGIN_CONTINUE
}
public client_color(playerid,colorid,msg[]){
message_begin(playerid?MSG_ONE:MSG_ALL, get_user_msgid("SayText"), {0,0,0}, playerid)
write_byte(colorid)
write_string(msg)
message_end()
}
public new_round(){
new i
if (!Round_Control){
g_roundcount++
Round_Control = 1
g_firstblood=1
g_iRoundEndTriggered=0
for(i=0;i<=32;i++)playerkilled=0;
}
}
public eEndRound(){
if (g_iRoundEndTriggered) return PLUGIN_CONTINUE
g_iRoundEndTriggered=1
Round_Control=0
new i,maxkillcount
maxkillcount=0
new RoundEndMsg[513],ipos
new playerslist[32],playerscount
ipos=0
ipos+=format(RoundEndMsg[ipos],512-ipos,"本局最佳杀手")
get_players(playerslist,playerscount)//Get Players
for(i=0;i<playerscount;i++){
if(playerkilled[playerslist]&&playerkilled[playerslist]>maxkillcount) maxkillcount=playerkilled[playerslist]
}
if(maxkillcount){
new playername[33],playeradded=0
ipos+=format(RoundEndMsg[ipos],512-ipos," (杀%d人)^n __________________________^n",maxkillcount)
for(i=0;i<playerscount;i++){
if(playerkilled[playerslist]==maxkillcount){//WeiGet this players
get_user_name(playerslist,playername,32)
ipos+=format(RoundEndMsg[ipos],512-ipos,"%s^n",playername)
++playeradded
if(playeradded>=2){
ipos+=format(RoundEndMsg[ipos],512-ipos,"......^n")
break;
}
}
}
}else{
ipos+=format(RoundEndMsg[ipos],512-ipos,"^n__________________________^n大家太客气了,都没有杀敌^n")
}
set_hudmessage( 49,179,113, -1.0, 0.55, 2, 0.02, 5.0, 0.01, 0.01, 3 )
show_hudmessage(0,RoundEndMsg)
return PLUGIN_CONTINUE
}
public eRestart()
{
g_roundcount = 0
g_firstblood = 0
Round_Control = 0
rewardedbig = 0
}
public _showChatGreenMsg(id, msg[256]) {
format(msg, 255, "^x01^x04%s^x01", msg)
new g_msgSayText = get_user_msgid("SayText")
message_begin(MSG_ALL,g_msgSayText, {0,0,0}, id)
write_byte(id)
write_string(msg)
message_end()
}
public event_death()
{
if (gBonusMode && gRoundStart) {
new iKiller = read_data(1)
new iVictim = read_data(2)
new sMsg[MAX_TEXT_LENGTH]
new sName[MAX_NAME_LENGTH]
get_user_name(iKiller,sName,MAX_NAME_LENGTH)
if ((iKiller != iVictim) && (gBonusCount < sizeof gBonusIndex) && (get_user_team(iKiller) != get_user_team(iVictim))) {
gBonusCount++
cs_set_user_money2(iKiller,cs_get_user_money2(iKiller)+gBonusIndex[gBonusCount-1])
if (gBonusCount == 1) {
//format(sMsg,MAX_TEXT_LENGTH,"%s 第1个杀人! 奖励$%i ",sName,gBonusIndex[gBonusCount-1])
//format(_tmpStr, 255, "%s 第1个杀人!获得$%i奖励",sName,gBonusIndex[gBonusCount-1])
//set_hudmessage(0,255,0,-1.58,0.18,0,6.0,6.0,0.5,0.5,158)
_showChatGreenMsg(iKiller, _tmpStr)
}
else if (gBonusCount == 2) {
//format(sMsg,MAX_TEXT_LENGTH,"%s 第2个杀人! 奖励$%i ",sName,gBonusIndex[gBonusCount-1])
format(_tmpStr, 255, "%s 第2个杀人!获得$%i奖励",sName,gBonusIndex[gBonusCount-1])
//set_hudmessage(255, 0, 255,-1.58,0.26,0,6.0,6.0,0.5,0.5,157)
_showChatGreenMsg(iKiller, _tmpStr)
}
else if (gBonusCount == 3) {
//format(sMsg,MAX_TEXT_LENGTH,"%s 第3个杀人! 奖励$%i ",sName,gBonusIndex[gBonusCount-1])
format(_tmpStr, 255, "%s 第3个杀人!获得$%i奖励",sName,gBonusIndex[gBonusCount-1])
//set_hudmessage(255, 242, 0,-1.58,0.34,0,6.0,6.0,0.5,0.5,156)
_showChatGreenMsg(iKiller, _tmpStr)
}
else {
//format(sMsg,MAX_TEXT_LENGTH,"%s 第%i个杀人! 奖励$%i ",sName,gBonusCount,gBonusIndex[gBonusCount-1])
format(_tmpStr, 255, "%s 第%i个杀人!获得$%i奖励",sName,gBonusCount,gBonusIndex[gBonusCount-1])
//set_hudmessage(0,100,255,-1.58,0.42,0,6.0,6.0,0.5,0.5,150)
_showChatGreenMsg(iKiller, _tmpStr)
}
//display_msg(sMsg,200,200,200)
show_hudmessage(0,sMsg)
}
}
return PLUGIN_CONTINUE
}
public event_round_end() {
gRoundStart = false
gBonusCount = 0
}
public round_start() { //增加行
gRoundStart = true //增加行
} //增加行
public admin_bonuskill(id)
{
// Check access level
if (!(get_user_flags(id)&ACCESS_LEVEL)) {
console_print(id,"[注意] 你没有权限使用这个命令!")
return PLUGIN_HANDLED
}
// Check arguments
if (read_argc() < 2) {
console_print(id,"[注意] 使用格式为: money_bonus < 1 | 0 >")
return PLUGIN_HANDLED
}
new sArg1[MAX_NAME_LENGTH]
read_argv(1,sArg1,MAX_NAME_LENGTH)
if (str_to_num(sArg1)) {
gBonusMode = 1
client_print(id,print_chat,"[Money_Bonus] 前五名杀人奖励插件已启用.")
}
else {
gBonusMode = 0
client_print(id,print_chat,"[Money_Bonus] 前五名杀人奖励插件已关闭.")
}
return PLUGIN_HANDLED
}
public plugin_init(){
register_plugin("First Killer Reward","0.1","Zhao")
register_event("RoundTime", "new_round", "bc")
register_event("DeathMsg","eDeathMsg","a")
register_event("SendAudio","event_round_end","a","2&%!MRAD_terwin","2&%!MRAD_ctwin","2&%!MRAD_rounddraw")
register_event("HLTV", "round_start", "a", "1=0", "2=0")
register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin","2&%!MRAD_ctwin","2&%!MRAD_rounddraw")
register_event("TextMsg","eRestart","a","2&#Game_C","2&#Game_w")
register_concmd("money_bonus","admin_bonuskill",ACCESS_LEVEL,"amx_powers < authid | part of nick >")
g_firstblood=1
rewardedbig = 0
g_roundcount=0
}
/* UTF-8 func by www.DT-Club.net */
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset134 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang2052\\ f0\\ fs16 \n\\ par }
*/ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注个册吧
×
|