Kết quả 1 đến 5 của 5
Chủ đề: Share cách tạo phó bản Event.
-
11-08-16, 07:24 PM #1
- Ngày tham gia
- Jun 2015
- Bài viết
- 58
- Thanks
- 7
- Thanked 18 Times in 11 Posts
Share cách tạo phó bản Event.
Tình hình là từ khi mấy pro box CQ ra đi thì box CQ lặng quá.
Giờ mình sẽ hướng dẫn cho các bạn tạo 1 Event phó bản tùy thích dạng như Event Cổ mộ. Cùng nhau học hỏi phát triển server offline.
TẠO EVENT PHÓ BẢN:
Vì dựa trên Event cổ mộ nên chúng ta chỉ cần edit và thêm 1 số cái là được. Edit xong các bạn lưu file dưới 1 cái tên khác nhé. Nhớ Edit lời thoại cũng như tên map.
Đầu tiên chúng ta sẽ vào đường dẫn:
Code:sys/party/gumu
PHP Code:#include <npc.h>
#include <ansi.h>
#include <cmd.h>
#include <effect.h>
#include <public.h>
#include <map.h>
#define FILE_MAP "map/copy/705" //đường dẫn file map
#define FILE_SENDER "npc/party/0042" //xa phu để thoát khỏi PB
#define FILE_GUAI "npc/boss/00083" //đường dẫn file quái
#define FILE_BOSS "npc/boss/00082" //đường dẫn file boss
#define CHECK_TIME "sys/party/gumu_check_time" //đường dẫn file thời gian event
#define DEBUG(who,arg) ; //tell_user(who,arg);
#define DEBUG2(who,z,x,y) ;//who->add_to_scene(z,x,y);
inherit OFFICER;
object *Map;
mapping zoubiao=([
1:({96,52}),2:({100,52}),3:({104,54}),4:({103,59}),5:({98,59 }),6:({95,61 }),7:({93,66 }),8:({92,70 }),9:({90,74 }),10 : ({87,77 }),
11 : ({82,79 }),12 : ({82,84 }),13 : ({86,86 }),14 : ({92,86 }),15 : ({97,86 }),16 : ({101,84}),17 : ({100,89}),18 : ({97,92 }),19 : ({100,94}),20 : ({103,90}),
21 : ({107,91}),22 : ({105,95}),23 : ({101,97}),24 : ({98,97 }),25 : ({96,99 }),26 : ({103,101}),27 : ({102,104}),28 : ({101,107}),29 : ({106,107}),30 : ({105,111}),
31 : ({108,111}),32 : ({111,113}),33 : ({110,117}),34 : ({115,115}),35 : ({116,119}),36 : ({119,119}),37 : ({122,117}),38 : ({121,121}),39 : ({124,121}),40 : ({125,121}),
41 : ({124,123}),42 : ({124,125}),43 : ({127,123}),44 : ({128,121}),45 : ({130,121}),46 : ({129,124}),47 : ({128,127}),48 : ({130,124}),49 : ({133,122}),50 : ({133,125}),
51 : ({132,128}),52 : ({135,127}),53 : ({136,125}),54 : ({138,123}),55 : ({140,121}),56 : ({140,125}), 57 : ({139,130}), 58 : ({140,130}), 59 : ({143,126}), 60 : ({144,124}),
61 : ({144,122}),62 : ({147,125}),63 : ({146,130}),64 : ({147,129}),65 : ({147,124}), 66 : ({147,126}), 67 : ({147,128}), 68 : ({146,131}), 69 : ({150,128}), 70 : ({150,126}),
71 : ({151,122}),72 : ({151,124}),73 : ({149,127}),74 : ({150,130}),75 : ({152,129}), 76 : ({154,126}), 77 : ({154,123}), 78 : ({155,120}), 79 : ({155,124}), 80 : ({154,128}),
81 : ({154,130}),82 : ({154,131}),83 : ({156,128}),84 : ({157,124}),85 : ({157,126}),86 : ({158,130}), 87 : ({157,133}), 88 : ({159,131}), 89 : ({160,130}), 90 : ({161,127}),
91 : ({162,124}),92 : ({162,122}),93 : ({163,121}),94 : ({163,120}),95 : ({164,124}), 96 : ({163,128}), 97 : ({164,131}), 98 : ({164,129}), 99 : ({165,126}), 100 : ({165,124}),
101 : ({163,121}), 102 : ({164,119}), 103 : ({166,123}), 104 : ({166,126}), 105 : ({167,128}), 106 : ({169,127}), 107 : ({168,124}), 108 : ({168,122}), 109 : ({170,124}), 110 : ({171,127}),
111 : ({173,127}), 112 : ({174,125}), 113 : ({174,124}), 114 : ({174,120}), 115 : ({175,117}), 116 : ({177,117}), 117 : ({177,120}), 118 : ({176,123}), 119 : ({175,126}), 120 : ({175,129}),
121 : ({177,129}), 122 : ({177,128}), 123 : ({178,126}), 124 : ({179,123}), 125 : ({179,120}), 126 : ({180,117}), 127 : ({181,120}), 128 : ({180,123}), 129 : ({180,125}), 130 : ({178,128}),
131 : ({178,132}), 132 : ({180,130}), 133 : ({181,127}), 134 : ({182,125}), 135 : ({184,125}), 136 : ({184,123}), 137 : ({184,127}), 138 : ({185,130}), 139 : ({186,129}), 140 : ({187,127}),
141 : ({190,126}), 142 : ({189,128}), 143 : ({190,131}), 144 : ({193,129}), 145 : ({194,127}), 146 : ({197,125}), 147 : ({197,128}), 148 : ({197,131}), 149 : ({195,135}), 150 : ({198,134}),
151 : ({202,132}), 152 : ({203,130}), 153 : ({206,127}), 154 : ({209,123}), 155 : ({209,127}), 156 : ({209,131}), 157 : ({207,135}), 158 : ({204,137}), 159 : ({201,140}), 160 : ({204,139}),
161 : ({208,135}), 162 : ({211,131}), 163 : ({212,136}), 164 : ({210,140}), 165 : ({208,144}), 166 : ({206,148}), 167 : ({209,146}), 168 : ({212,144}), 169 : ({215,141}), 170 : ({217,138}),
171 : ({219,135}), 172 : ({221,132}), 173 : ({222,135}), 174 : ({226,135}), 175 : ({231,132}), 176 : ({226,136}), 177 : ({223,139}), 178 : ({220,141}), 179 : ({217,144}), 180 : ({214,145}),
181 : ({212,149}), 182 : ({211,153}), 183 : ({209,155}), 184 : ({206,159}), 185 : ({209,160}), 186 : ({205,160}), 187 : ({193,166}), 188 : ({198,168}), 189 : ({201,166}), 190 : ({204,163}),
191 : ({204,166}), 192 : ({206,166}), 193 : ({205,169}), 194 : ({207,169}), 195 : ({206,172}), 196 : ({212,179}), 197 : ({215,183}), 198 : ({218,193}), 199 : ({223,199}), 200 : ({226,204}), //tọa độ quái xuất hiện theo thứ tự từ 1-200. Bạn tự edit lại số lượng quái theo ý thích
]);
int new_copy_scene(object who,object me);
int new_copy_npc(int z,int level);
int new_copy(object who,object me);
//int add_npc(int z,int x,int y,int level);
// 函数:生成二进制码
void SAVE_BINARY() { }
int add_npc(object who,int z,int x,int y,int level);
int add_boss(object who,int z,int x,int y,int level);
//int add_boss(int z,int x,int y,int level);
void create()
{
Map=({});
setup();
}
void do_look(object who,object me)
{
string result;
if(!(CHECK_TIME->get_gumu_party_open())) return;
if(!(CHECK_TIME->get_gumu_open()))
{
result=sprintf(me->get_name()+":\nTương truyền để tưởng nhớ một vị đại tướng của Tần Quốc qua đời, Tần Vương đã ban thưởng những báu vật kỳ lạ để tuẫn táng theo vị đại tướng này. Tin tức về các kì trân dị bảo đã thu hút vô số anh hùng hảo hán đến thám hiểm, tuy nhiên kết cục không ai phá vỡ được Thạch Dũng Trận bên trong Cổ Mộ và đều ra về tay không. Ngươi có muốn thử sức mình không? ( Hãy đến tìm tai để được đến Cổ Mộ mỗi ngày từ 20: 30 đến 22:00).\n");
result+=sprintf(ESC "Rời khỏi");
send_user(who,"%c%c%w%s",':',3,me->get_char_picid(),result);
return;
}
result=sprintf(me->get_name()+":\nTương truyền để tưởng nhớ một vị đại tướng của Tần Quốc qua đời, Tần Vương đã ban thưởng những báu vật kỳ lạ để tuẫn táng theo vị đại tướng này. Tin tức về các kì trân dị bảo đã thu hút vô số anh hùng hảo hán đến thám hiểm, tuy nhiên kết cục không ai phá vỡ được Thạch Dũng Trận bên trong Cổ Mộ và đều ra về tay không. Ngươi có muốn thử sức mình không?\n");
result+=sprintf(ESC "Thám hiểm Cổ mộ\ntalk %x# welcome.1\n",getoid(me));
result+=sprintf(ESC "Rời khỏi");
send_user(who,"%c%c%w%s",':',3,me->get_char_picid(),result);
}
void do_welcome(object me, object who,string arg)
{
int i,flag,size,x,y,z,p,tid;
int level=0;
string result;
object map,*team;
who->set_time("time",0);
flag=to_int(arg);
switch(flag)
{
case 1:
team=who->get_team();
size=sizeof(team);
if(!(CHECK_TIME->get_gumu_party_open())) return;
if(!(CHECK_TIME->get_gumu_open())) return;
if(!who->is_leader())
{
result=sprintf(me->get_name()+":\n Hãy gọi đội trưởng tới gặp ta !\n");
result+=sprintf(ESC"Rời khỏi");
send_user(who,"%c%c%w%s",':',3,me->get_char_picid(),result);
return;
}
if(size<2)
{
result=sprintf(me->get_name()+":\n Lập tổ đội 2 người trở lên rồi mới đến gặp ta !\n");
result+=sprintf(ESC"Rời khỏi");
send_user(who,"%c%c%w%s",':',3,me->get_char_picid(),result);
return;
}
for(i=0;i<size;i++)
{
if(!objectp(team[i])) continue;
if(!inside_screen_2(me,team[i]))
{
result=sprintf(me->get_name()+":\n Hãy gọi tất cả thành viên trong nhóm đến gặp ta !\n");
result+=sprintf(ESC "Rời khỏi");
send_user(who,"%c%c%w%s",':',3,me->get_char_picid(),result);
return;
}
if(team[i]->get_level()<20)
{
result=sprintf(me->get_name()+":\n Thành viên trong nhóm ngươi "HIR "%s "NOR "cấp bậc chưa đủ 20 cấp !\n",team[i]->get_name() );
result+=sprintf(ESC "Rời khỏi");
send_user(who,"%c%c%w%s",':',3,me->get_char_picid(),result);
return;
}
}
if(!new_copy(who,me)==1) return;
tid =who->get("team_id");
map = TEAM_D->get_copy_scene(tid,COPY_GUMU);
if ( map )
{
z=map->get_id();
x=102;y=62; //]tọa độ khi dịch chuyển vào PB
if(!p=get_valid_xy( z, x, y, IS_CHAR_BLOCK)) return;
x = ( p % 1000000 ) / 1000; y = p % 1000;
for(i=0;i<sizeof(team);i++)
{
team[i]->set("me_die",1);
send_user(team[i], "%c%c%w%s", 0x5a, 0, 3, "Đang di chuyển……");
team[i]->set_2("travel.z", z);
team[i]->set_2("travel.p",p);
team[i]->set("map",map);
set_effect(team[i], EFFECT_TRAVEL, 3);
// team[i]->add_to_scene(z,x,y,3);
if(is_god(team[i]))
{
DEBUG(team[i],sprintf("测试--do_look z=%d,level=%d",z,map->get("copy_level")));
}
}
}
break;
}
}
//创建新的虚拟场景395并把NPC放入指定位置(94,54)处;
int new_copy_scene(object who,object me)
{
int z,d,tid,i,size;
object map,npc,*team;
d=395; //id map
tid=who->get_team_id();
if(!tid)return 0;
team=who->get_team();
size=sizeof(team);
z = COPY_CTROL->new_scene(d,FILE_MAP,"Cổ Mộ");
if(!z) return 0;
if(!objectp(map=get_map_object(z))||!map->is_virtual_scene())
return 0;
TEAM_D->add_copy_scene(tid,COPY_GUMU,map);
map->set("copy_id",1);
map->set("gumu_map",1);
Map+=({map});
npc=new(FILE_SENDER); //新建一副本NPC-->场景传送人
if(!npc) return 0;
npc->add_to_scene(z,94,52,3);
for(i=0;i<size;i++)
{
team[i]->set("team_id",tid);
map->set_owner(team[i]);
}
return z;
}
// 生成副本第一个怪并把放入第一个指定位置(78,81)
int new_copy_npc(int z,int level)
{
int key,*xy,ap,hp;
object map,npc;
key=1;
xy=zoubiao[key];
if(!objectp(map=get_map_object(z))||!map->is_virtual_scene())
return 0;
npc=new(FILE_GUAI);
if(!npc) return 0;
npc->set_level(level);
NPC_ENERGY_D->init_level(npc,level);
npc->set_fight_status(level);
// npc->set_name(sprintf("Thủ Mộ Thạch Dũng %d ",key));
npc->add_to_scene(z,xy[0],xy[1],3);
map->set("copy_npc_sum",200);
map->add("copy_npc_count",1);
DEBUG(this_player(),sprintf("测试--new_copy_npc->copy_npc_count=%d",map->get("copy_npc_count")));
return 1;
}
//生成虚拟场景。
int new_copy(object who,object me)
{
int i,tid,size,z;
int level=0;
object *team,map;
//求出队伍的平均级别
tid=who->get_team_id();
if(!tid) return 0;
if(!team=who->get_team()) return 0;
for(i=0,size=sizeof(team);i<size;i++)
level+=team[i]->get_level();
level=level/size;
z=new_copy_scene(who,me);
if(!z) return 0;
if(!objectp(map=get_map_object(z))||!map->is_virtual_scene())
return 0;
if(!new_copy_npc(z,level)) return 0;
map->set("copy_level",level);
return 1;
}
//npc 死亡处理
void npc_die(object who,object me)
{
int z,level,key,*xy,i,size,count,tid;
string result;
object map,*team=({});
team=who->get_team();
if(!team) team=({who});
size=sizeof(team);
tid=who->get("team_id");
DEBUG(who,sprintf("tid=%d",tid));
map=who->get("map");
// map=TEAM_D->get_copy_scene(tid,COPY_GUMU);
if(!map) return;
z=map->get_id();
DEBUG(who,sprintf("z=%d",z));
level=map->get("copy_level");
map->add("kill_npc_count",1);
key=map->get("kill_npc_count");
count=map->get("copy_npc_count");
for(i=0;i<size;i++)
{
send_user(team[i],"%c%s",'!',sprintf("Đã tiêu diệt được:"HIY" %d/200",key)); //phần hiển thị số quái tiêu diệt trong PB. Tự edit số lượng quái
DEBUG(team[i],sprintf("测试--npc_die key=%d",key));
DEBUG(team[i],sprintf("测试--npc_die kill_npc_count=%d",key));
}
if((count>0&&count<50)||(count>50&&count<100)|| //vd số lượng quái ta muốn chỉnh là 100 ta sẽ edit phần này như sau: if((count>0&&count<25)||(count>25&&count<50||
(count>100&&count<150)||(count>150&&count<200)) //(count>50&&count<75)||(count>75&&count<100))
{
xy=zoubiao[key+1];
__FILE__->add_npc(who,z,xy[0],xy[1],level);
for(i=0;i<size;i++)
{
DEBUG(team[i],sprintf("测试--下一个NPC key=%d x=%d y=%d",key+1,xy[0],xy[1]));
DEBUG2(team[i],map->get_id(),xy[0]+1,xy[1]+1);
}
}
if(count==50||count==100||count==150)
{
xy=zoubiao[key+1];
__FILE__->add_npc(who,z,xy[0],xy[1],level);
for(i=0;i<size;i++)
{
DEBUG(team[i],sprintf("测试--下一个NPC key=%d x=%d y=%d",key+1,xy[0],xy[1]));
DEBUG2(team[i],map->get_id(),xy[0]+1,xy[1]+1);
}
xy=zoubiao[key+2];
__FILE__->add_npc(who,z,xy[0],xy[1],level);
for(i=0;i<size;i++)
{
DEBUG(team[i],sprintf("测试--下一个NPC key=%d x=%d y=%d",key+1,xy[0],xy[1]));
DEBUG2(team[i],map->get_id(),xy[0]+1,xy[1]+1);
}
}
if(count==200)
{
if(!(key==map->get("copy_npc_sum"))) return;
for(i=0;i<size;i++)
{
send_user(team[i],"%c%s",'!',HIY"Thủ Mộ Thạch Tướng đã tỉnh dậy !");
}
xy=zoubiao[key];
__FILE__->add_boss(who,z,xy[0],xy[1],level);
}
}
int add_npc(object who,int z,int x,int y,int level) //加入小怪
{
int ap,hp,i,size,tid;
object map,npc,*team;
//who=this_player();
tid=who->get("team_id");
DEBUG(who,"add_npc test");
//if(!map=TEAM_D->get_copy_scene(tid,COPY_GUMU)) return;
if(!map=who->get("map")) return;
if(!(map->get("copy_npc_count")<=map->get("copy_npc_sum")))
{
send_user(who,"%c%s",'!',HIY"Thủ Mộ Thạch Tướng đã tỉnh dậy !");
return;
}
npc=new(FILE_GUAI);
if(!npc) return 0;
npc->set_level(level);
NPC_ENERGY_D->init_level(npc,level);
npc->set_fight_status(level);
map->add("copy_npc_count",1);
//npc->set_name(sprintf("Thủ Mộ Thạch Dũng %d ",map->get("copy_npc_count"))); //用于测试
npc->add_to_scene(z,x,y,3);
return 1;
}
//int new_scene(int d, string mapname,string name) //新增副本场景
//{
// int z;
// object map;
// if( ( z = find_map_flag(COPY_MAP_BEGIN, COPY_MAP_END, 0) ) > 0 )
// {
// init_virtual_map(z, d);
// map = new(mapname);
// if(!map) return;
// map->set_client_id(d);
// map->set("gumu_map",1);
// set_map_object( map, map->set_id(z) );
// Map+=({map});
// }
// return z;
//}
int add_boss(object who,int z,int x,int y,int level) //加入大boss
{
int ap,hp,rate,type,tid;
object map,npc;
//who=this_player();
tid=who->get("team_id");
//if(!map=TEAM_D->get_copy_scene(tid,COPY_GUMU)) return;
if(!map=who->get("map")) return;
rate=random100();
npc=new(FILE_BOSS);
if(!npc) return;
if(rate<20) type=1;
else if(rate<40) type=2;
else if(rate<60) type=3;
else if(rate<70) type=4;
else if(rate<90) type=5;
else type=6;
npc->set_level(level);
NPC_ENERGY_D->init_level(npc,level);
npc->set_fight_status(type,level);
npc->add_to_scene(z,x,y,3,9413);
return 1;
}
//24:00时退出还在古墓的所有玩家
void player_exit()
{
int i,j,size1,size2,x,y,z,p;
object *member;
x=276; y=163; z=80; //tọa độ khi thoát ra khỏi PB
if(!Map) return;
size1=sizeof(Map);
for(i=0;i<size1;i++)
{
member=FILE_MAP->get_all_user( Map[i] );
if((size2=sizeof(member))<1) continue;
for(j=0;j<size2;j++)
{
if(!p=get_valid_xy( z, x, y, IS_CHAR_BLOCK)) return;
x = ( p % 1000000 ) / 1000; y = p % 1000;
send_user(member[j],"%c%s",'!',HIY"Ngươi đã vượt qua thời gian thám hiểm !");
call_out("send_player",3,member[j]);
}
}
}
void send_player(object who)
{
int x,y,z,p;
z=80; x=276; y=163; //tọa độ khi thoát ra khỏi PB
if(!p=get_valid_xy( z, x, y, IS_CHAR_BLOCK)) return;
x = ( p % 1000000 ) / 1000; y = p % 1000;
who->add_to_scene(z,x,y);
}
object *delete_map(object map)
{
Map-=({map});
return Map;
}
Code:sys/party/gumu_check_time
PHP Code:/*******************************
**古墓探险**
*******************************/
#include <time.h>
#include <ansi.h>
inherit DBASE_F;
inherit SAVE_F;
#define FILE_NPC "npc/party/0041" //đường dẫn file npc dịch chuyển vào PB
#define PLAYER_EXIT "sys/party/gumu" //đường dẫn file Event ta lưu ở trên
#define FILE_SAVE "data/party"SAVE_EXTENSION
#define DEBUG(arg) if(find_char("9")) tell_user(find_char("9"),arg);
int gumu=0;
int gumu_party=1;
// 函数:生成二进制码
void SAVE_BINARY() { }
//活动开启状态保存
string get_save_file()
{
return FILE_SAVE;
}
void create()
{
restore();
gumu=0;
call_out("check_time",3);
}
void check_time()
{
int iTime,i;
mixed *mixTime;
remove_call_out("check_time");
iTime = get_party_time();
if(!gumu_party) return;
mixTime = localtime(iTime);
if (mixTime[TIME_HOUR]>22) //Thời gian kết thúc Event 22h
{
call_out("check_time",3600*24-mixTime[TIME_HOUR]*3600-mixTime[TIME_MIN]*60);
return;
}
if ( mixTime[TIME_HOUR] <20 ) //Thời gian bắt đầu Event 20h, bạn edit lại mấy con số 3 chỗ 20 nhé. Vd edit là 18h thì 18h30 Event bắt đầu
{
call_out("check_time",20*3600-mixTime[TIME_HOUR]*3600-mixTime[TIME_MIN]*60);
return ;
}
if ( mixTime[TIME_HOUR] ==20 && mixTime[TIME_MIN]<30 )
{
call_out("check_time1",60*(30-mixTime[TIME_MIN]));
return;
}
else
call_out("check_time1",1);
}
void check_time1()
{
int i;
mixed *mixTime;
mixTime=localtime(get_party_time());
if(gumu_party)
{
for(i=0;i<3;i++)
CHAT_D->sys_channel(0,HIR"Thám hiểm Cổ Mộ chính thức bắt đầu, mọi người hãy nhanh đến Chu(276,163) báo danh!");
}
gumu=1;
call_out("check_time2",22*3600-mixTime[TIME_HOUR]*3600-mixTime[TIME_MIN]*60);
}
void check_time2()
{ int i;
mixed *mixTime;
mixTime=localtime(get_party_time());
remove_call_out("check_time2");
if(gumu_party)
{
for(i=0;i<3;i++)
CHAT_D->sys_channel(0,HIR"Thám hiểm Cổ Mộ chính thức kết thúc, mọi người hãy lại đến Chu(276,163) báo danh vào tối mai!");
}
gumu=0;
call_out("player_exit",24*3600-mixTime[TIME_HOUR]*3600-mixTime[TIME_MIN]*60);
call_out("check_time",24*3600-mixTime[TIME_HOUR]*3600-mixTime[TIME_MIN]*60);
}
int get_gumu_open()
{
return gumu;
}
void set_gumu_party_open( int party,int test)
{
if(party==0)
{
if(test)
{
USER_D->gm_channel(HIY"测试活动关闭");
gumu=0;
}
USER_D->gm_channel(HIY"GM正常关闭活动");
}
else
{
if(test)
{
USER_D->gm_channel(HIY"测试活动开启") ;
gumu=1;
}
USER_D->gm_channel(HIY"GM正常开启活动") ;
}
gumu_party=party;
__FILE__->check_time();
save();
}
int get_gumu_party_open()
{
return gumu_party;
}
string get_party_statue()
{
if(get_gumu_party_open()&&get_gumu_open())
return "古墓探险活动处于开始状态";
else if(get_gumu_party_open())
return "古墓探险活动处于正常开启状态";
return "古墓探险活动处于关闭状态";
}
//void add_npc(int z,int x,int y)
//{
// object npc,map;
// npc=new(FILE_NPC);
// if(!npc) return;
// if(!z&&!x&&!y) return;
// if(!objectp(map=get_map_object(z))) return;
// npc->add_to_scene(z,x,y,4,9413);
// map->set("npc",npc);
//}
//
//void delete_npc(int z)
//{
// object map,npc;
// if(!z) return;
// if(!objectp(map=get_map_object(z))) return;
// npc=map->get("npc");
// npc->remove_from_scene();
// destruct(npc);
// map->delete("npc");
//
//}
void player_exit()
{
PLAYER_EXIT->player_exit();
}
Code:npc/party/0041
Code:npc/party/0042
Về phần map:
Code:map/copy
PHP Code:#define FILE_GUMU "sys/party/gumu" //Đây là đường dẫn tới file Event, chúng ta edit phần này theo tên file Event các bạn tạo.
inherit COPY_MAP;
// 函数:构造处理
void create()
{
object me = this_object();
set_client_id(703); //]Id map. Id map các bạn có thể vào client phần map xem id, mấy cái file số vd: 970.dat chính là id map. Test map bằng cách vào game gõ lệnh /go2map id
set_name("Cổ Mộ"); //Tên map
if( !clonep(me) ) return;
set_heart_timer( me, set_heart_timer_2(me, getoid(me) % 10) ); // 心跳随机
set_heart_loop(me, 600); // 循环心跳:1分钟
me->heart_beat();
set_heart_beat(1);
}
// 函数:心跳处理(循环)
void heart_beat_loop( int effect1, int effect2, int effect3, int effect4, int effect5, int effect6, int effect7, int effect8 ) { __FILE__ ->heart_beat_loop_callout( this_object(), effect1, effect2, effect3, effect4, effect5, effect6, effect7, effect8 ); }
// 函数:心跳处理(循环)(在线更新)
void heart_beat_loop_callout( object map, int effect1, int effect2, int effect3, int effect4, int effect5, int effect6, int effect7, int effect8 ) // 每1分处理
{
object *nMember;
nMember = __FILE__->get_all_user( map );
if ( nMember )
nMember -= ({0});
if ( sizeof(nMember) )
return ;
//副本内无玩家,删除此副本
FILE_GUMU->delete_map(map);
COPY_MAP->destruct_virtual_map( map, map->get_id() );
}
object *get_all_user( object map )
{
object *item, who, *npc=({}),*all=({});
int z, x, y, p, max_x, max_y;
int i, size;
reset_eval_cost();
z = map->get_id(); max_x = get_map_max_x(z); max_y = get_map_max_y(z);
for( x = 0; x < max_x; x += AREA_SIZE ) for( y = 0; y < max_y; y += AREA_SIZE )
{
if( have_scene_object(z, x, y, USER_TYPE, 1) )
{
item = get_scene_object(z, x, y, USER_TYPE, 1);
for( i = 0, size = sizeof(item); i < size; i ++ ) if( who = item[i] )
{
all += ({ item[i] });
}
}
}
for (i=0;i<sizeof(all);i++)
{
if (all[i]->is_user())
npc += ({all[i]});
}
return npc;
}
Code:map/npc/city.c
Lần sửa cuối bởi duycarry, ngày 11-08-16 lúc 07:36 PM.
Khách viếng thăm hãy cùng duycarry xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
The Following 6 Users Say Thank You to duycarry For This Useful Post:
BeeZone (25-08-16), dat233 (13-08-16), ditmelol (07-03-18), nhochamvui_lov (29-10-16), quancoi000 (24-08-16), thanhtunghk (24-08-16)
-
13-08-16, 08:04 AM #2
- Ngày tham gia
- May 2015
- Bài viết
- 21
- Thanks
- 1
- Thanked 5 Times in 3 Posts
Khách viếng thăm hãy cùng Dreamy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
13-08-16, 02:48 PM #3
- Ngày tham gia
- Jun 2015
- Bài viết
- 58
- Thanks
- 7
- Thanked 18 Times in 11 Posts
Ðề: Share cách tạo phó bản Event.
Khách viếng thăm hãy cùng duycarry xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
24-08-16, 08:22 PM #4
Ðề: Share cách tạo phó bản Event.
tâm huyết ghê..... quá đi
giỏi quáServer MU Origin 2.6, 3.0 và 7.0 đầy đủ Liên Server!
Nhận gộp DB luôn!
-
24-08-16, 11:09 PM #5
Ðề: Share cách tạo phó bản Event.
Thấy cảm phục những người như bạn cực ấy! Mấy bài ghim toàn từ 2010 2012 mà đến giờ bạn vẫn còn đam mê! Thực sự là mình chẳng biết sv này ntn cả. Thấy bài mới trên 4r thì vào xem. Cảm ơn bạn!
Các Chủ đề tương tự
-
[JX] Share bộ event mùa hè nóng bỏng nè !
Bởi keo_ngot1418 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)Trả lời: 9Bài viết cuối: 21-03-16, 06:32 PM -
[JX] share spr event 8/3 cùi
Bởi keo_ngot1418 trong diễn đàn ReleasesTrả lời: 2Bài viết cuối: 16-03-16, 07:12 PM -
[JX] cần share event giáng sinh
Bởi lehuydaica trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 0Bài viết cuối: 04-01-13, 08:21 PM -
[MAP SHARE] Tàu Chở Hàng , Event , v..v...
Bởi Oai_online trong diễn đàn Gunz OnlineTrả lời: 2Bài viết cuối: 15-04-12, 07:11 AM -
Share ý tưởng event của 1k
Bởi vudung trong diễn đàn CHUYÊN ĐỀ WEB GAMESTrả lời: 9Bài viết cuối: 10-01-12, 01:50 PM