发表于 2007-10-18 11:001#
楼主真武林第54关-[朝廷精兵战铁关]源码
/*
Attribute for SN_54 by ZMJ 2005/10/10
*/
//#include "MeterorAI.h"
#include "npctypes.pst"
#include "snopt.pst"
int Level = 54;
int Rule = GetSNRule(Level);
int RoundTime = GetSNTime(Level);
int PlayerSpawn = GetSNSpawn(Level);
int PlayerSpawnDir = 90;
int PlayerWeapon = GetSNWeapon(Level);
int PlayerWeapon2 = GetSNWeapon2(Level);
int PlayerHP = GetSNHP(Level);
int PlayerSpeed = GetSNSpeed(Level);
int PlayerExps = GetPlayerExps();
int trg = 0;
int trg2 = 0;
int scens = 0;
int gameover = 0;
int nallyhps = 0;
int nallykills = 0;
int allykills = 0;
int now0;
int now1;
int now2;
int now3;
int now4;
int now6;
int now7;
int gb_MaxSeedCount;
OnStart()
{
InitSNData();
AddEachNPC("接引使者", RELAY_JIEYIN, TEAM_ANY);
}
OnUpdate()
{
int player = GetAnyChar("player");
if (player < 0)
{
return 0;
}
if (gameover == 2)
{
return 0;
}
trg = LockChk(player, trg);
int c1;
int tmp;
int alives;
now1 = GetGameTime();
now4 = now1;
now7 = now1;
if(trg == 0)
{
now0 = now1;
Say(player, "接引使者?");
trg = 1;
LockBegin(player);
}
if(trg == 1)
{
c1 = GetAnyChar("接引使者");
if(now1-now0 > 5)
{
if(c1>0 && GetHP(c1)>0)
{
CheckSnapAdd(2, 16);
now3=now4;
trg = 2;
LockEnd(player);
}
if(c1>0 && GetHP(c1)<=0)
{
RemoveNPC(c1);
AddEachNPC("接引使者", RELAY_JIEYIN, TEAM_ANY);
now0 = now1;
return 0;
}
}
}
if(trg >= 2)
{
if(now1-now0>=PlayerSpeed)
{
UpdatePlayerOpt(player, PlayerSpeed);
now0 = now1;
}
}
if(trg == 2)
{
c1 = GetAnyChar("接引使者");
if(c1>0 && GetHP(c1)<=0)
{
RemoveNPC(c1);
FullPlayerHP(player);
LockScence(player, c1, 8, 99, 3);
Say(player, "朝廷重兵追杀新成名的超级高手小虾米?");
Say(player, "必须闯过这道关!");
Say(player, "据说此处有## ", 100, " ##精兵把守?");
Say(player, "看来我要大开杀戒呢! 罪过?");
SetRandSeedNPC("中原兵士", Level, SOLDIER_BEISONG, TEAM_ENEMY, 22);
SetRandSeedNPC("禁军教头", Level, JINJUN_JIAOTOU, TEAM_ENEMY, 4);
SetRandSeedNPC("契丹兵士", Level, SOLDIER_QIDAN, TEAM_ENEMY, 20);
SetRandSeedNPC("御林侍卫.突击", Level, YULIN_TUJI, TEAM_ENEMY, 4);
SetRandSeedNPC("黄甲铁卫", Level, HUANGJIA_TIEWEI, TEAM_ENEMY, 22);
SetRandSeedNPC("御林侍卫.飞虎", Level, YULIN_FEIHU, TEAM_ENEMY, 6);
SetRandSeedNPC("秦俑石卫", Level, SHIYONG_SHIWEI, TEAM_ENEMY, 22);
gb_MaxSeedCount = 100;
trg = 3;
scens = -1;
return 0;
}
now3=now4;
}
if(trg == 3)
{
c1 = GetSnapNAlly(2, 16);
tmp = GetAnyDiedEnemyId(2, 16);
if(tmp!=-1 || c1<8)
{
int speed = 0;
alives = GetSnapAlives(1, 16);
PlayerExps = PlayerExps+GetNewExps(2, 16);
RemoveSnapAlly(2, 16);
if(tmp != -1)
{
RemoveNPC(tmp);
allykills ++;
}
trg = 4;
scens ++;
if(tmp != -1)
{
if(allykills%5 == 0)
{
Say(player, "杀死: ", allykills, " 剩余: ", gb_MaxSeedCount-allykills);
Say(player, "*************", gb_MaxSeedCount-allykills, "*************");
}
Say(player, "经验值 : ", PlayerExps);
speed = GetSnapSpeeder(PlayerSpeed, PlayerExps);
if(PlayerSpeed-speed != 0)
{
Say(player, "升级: ", PlayerSpeed-speed, " 内力: ", 120-speed);
Say(player, "****************",120-speed,"****************");
}
PlayerSpeed = speed;
}
UpdateSnapReward(Level, player, PlayerSpeed);
if(JudgePassOver(Level, allykills, PlayerSpeed)==1)
{
OutputPassReward(PlayerExps, player);
trg = 88;
}
return 0;
}
}
if(trg == 4)
{
now2 = GetGameTime();
now3 = now2;
AddRandSeedNPC(scens);
trg = 5;
}
if(trg == 5)
{
now3 = GetGameTime();
if(now3-now2 >= 5)
{
CheckSnapAdd(2, 16);
UpdateRandSeedNPC(scens);
trg = 3;
}
}
if(trg != 99)
{
if(gameover!=-1 && GetHP(player)<=0)
{
Say(player, "天啊!");
Say(player, "出师未捷身先死,没想到还没去华山之巅决斗独孤求败就这样结束了?");
Say(player, "我不甘心啊?");
now6 = now7;
gameover = -1;
trg = 99;
}
}
if(trg == 88)
{
Say(player, "!!!杀尽此处朝廷官兵!!!");
Say(player, "终于闯过重重关隘,只是杀人太多!");
now6 = now7;
gameover = 1;
trg = 99;
}
if ((gameover==1 || gameover==-1))
{
if(now7-now6 >= 15)
{
if(gameover==1) {Save(PlayerExps);}
GameOver(gameover);
gameover = 2;
}
}
}
这关源码简单,看看大家能不能看出这关是如何玩得?
/*
Attribute for SN_54 by ZMJ 2005/10/10
*/
//#include "MeterorAI.h"
#include "npctypes.pst"
#include "snopt.pst"
int Level = 54;
int Rule = GetSNRule(Level);
int RoundTime = GetSNTime(Level);
int PlayerSpawn = GetSNSpawn(Level);
int PlayerSpawnDir = 90;
int PlayerWeapon = GetSNWeapon(Level);
int PlayerWeapon2 = GetSNWeapon2(Level);
int PlayerHP = GetSNHP(Level);
int PlayerSpeed = GetSNSpeed(Level);
int PlayerExps = GetPlayerExps();
int trg = 0;
int trg2 = 0;
int scens = 0;
int gameover = 0;
int nallyhps = 0;
int nallykills = 0;
int allykills = 0;
int now0;
int now1;
int now2;
int now3;
int now4;
int now6;
int now7;
int gb_MaxSeedCount;
OnStart()
{
InitSNData();
AddEachNPC("接引使者", RELAY_JIEYIN, TEAM_ANY);
}
OnUpdate()
{
int player = GetAnyChar("player");
if (player < 0)
{
return 0;
}
if (gameover == 2)
{
return 0;
}
trg = LockChk(player, trg);
int c1;
int tmp;
int alives;
now1 = GetGameTime();
now4 = now1;
now7 = now1;
if(trg == 0)
{
now0 = now1;
Say(player, "接引使者?");
trg = 1;
LockBegin(player);
}
if(trg == 1)
{
c1 = GetAnyChar("接引使者");
if(now1-now0 > 5)
{
if(c1>0 && GetHP(c1)>0)
{
CheckSnapAdd(2, 16);
now3=now4;
trg = 2;
LockEnd(player);
}
if(c1>0 && GetHP(c1)<=0)
{
RemoveNPC(c1);
AddEachNPC("接引使者", RELAY_JIEYIN, TEAM_ANY);
now0 = now1;
return 0;
}
}
}
if(trg >= 2)
{
if(now1-now0>=PlayerSpeed)
{
UpdatePlayerOpt(player, PlayerSpeed);
now0 = now1;
}
}
if(trg == 2)
{
c1 = GetAnyChar("接引使者");
if(c1>0 && GetHP(c1)<=0)
{
RemoveNPC(c1);
FullPlayerHP(player);
LockScence(player, c1, 8, 99, 3);
Say(player, "朝廷重兵追杀新成名的超级高手小虾米?");
Say(player, "必须闯过这道关!");
Say(player, "据说此处有## ", 100, " ##精兵把守?");
Say(player, "看来我要大开杀戒呢! 罪过?");
SetRandSeedNPC("中原兵士", Level, SOLDIER_BEISONG, TEAM_ENEMY, 22);
SetRandSeedNPC("禁军教头", Level, JINJUN_JIAOTOU, TEAM_ENEMY, 4);
SetRandSeedNPC("契丹兵士", Level, SOLDIER_QIDAN, TEAM_ENEMY, 20);
SetRandSeedNPC("御林侍卫.突击", Level, YULIN_TUJI, TEAM_ENEMY, 4);
SetRandSeedNPC("黄甲铁卫", Level, HUANGJIA_TIEWEI, TEAM_ENEMY, 22);
SetRandSeedNPC("御林侍卫.飞虎", Level, YULIN_FEIHU, TEAM_ENEMY, 6);
SetRandSeedNPC("秦俑石卫", Level, SHIYONG_SHIWEI, TEAM_ENEMY, 22);
gb_MaxSeedCount = 100;
trg = 3;
scens = -1;
return 0;
}
now3=now4;
}
if(trg == 3)
{
c1 = GetSnapNAlly(2, 16);
tmp = GetAnyDiedEnemyId(2, 16);
if(tmp!=-1 || c1<8)
{
int speed = 0;
alives = GetSnapAlives(1, 16);
PlayerExps = PlayerExps+GetNewExps(2, 16);
RemoveSnapAlly(2, 16);
if(tmp != -1)
{
RemoveNPC(tmp);
allykills ++;
}
trg = 4;
scens ++;
if(tmp != -1)
{
if(allykills%5 == 0)
{
Say(player, "杀死: ", allykills, " 剩余: ", gb_MaxSeedCount-allykills);
Say(player, "*************", gb_MaxSeedCount-allykills, "*************");
}
Say(player, "经验值 : ", PlayerExps);
speed = GetSnapSpeeder(PlayerSpeed, PlayerExps);
if(PlayerSpeed-speed != 0)
{
Say(player, "升级: ", PlayerSpeed-speed, " 内力: ", 120-speed);
Say(player, "****************",120-speed,"****************");
}
PlayerSpeed = speed;
}
UpdateSnapReward(Level, player, PlayerSpeed);
if(JudgePassOver(Level, allykills, PlayerSpeed)==1)
{
OutputPassReward(PlayerExps, player);
trg = 88;
}
return 0;
}
}
if(trg == 4)
{
now2 = GetGameTime();
now3 = now2;
AddRandSeedNPC(scens);
trg = 5;
}
if(trg == 5)
{
now3 = GetGameTime();
if(now3-now2 >= 5)
{
CheckSnapAdd(2, 16);
UpdateRandSeedNPC(scens);
trg = 3;
}
}
if(trg != 99)
{
if(gameover!=-1 && GetHP(player)<=0)
{
Say(player, "天啊!");
Say(player, "出师未捷身先死,没想到还没去华山之巅决斗独孤求败就这样结束了?");
Say(player, "我不甘心啊?");
now6 = now7;
gameover = -1;
trg = 99;
}
}
if(trg == 88)
{
Say(player, "!!!杀尽此处朝廷官兵!!!");
Say(player, "终于闯过重重关隘,只是杀人太多!");
now6 = now7;
gameover = 1;
trg = 99;
}
if ((gameover==1 || gameover==-1))
{
if(now7-now6 >= 15)
{
if(gameover==1) {Save(PlayerExps);}
GameOver(gameover);
gameover = 2;
}
}
}
这关源码简单,看看大家能不能看出这关是如何玩得?UID 12792


没研究过