?? script.c
字號:
#include <string.h>
#include <lua.h>
#include <lualib.h>
#include <tolua.h>
#include "mmo.h"
#include "core.h"
#include "npc.h"
#include "script2.h"
#include "script.h"
extern struct mmo_map_data map_data[];
int internal_fd;
struct map_session_data *internal_sd;
lua_State *L;
void get_char_data(struct mmo_charstatus cs)
{
zeny=cs.zeny;
class=cs.class;
status_point=cs.status_point;
skill_point=cs.skill_point;
hp=cs.hp;
max_hp=cs.max_hp;
sp=cs.sp;
max_sp=cs.max_sp;
option=cs.option;
karma=cs.karma;
manner=cs.manner;
hair=cs.hair;
hair_color=cs.hair_color;
clothes_color=cs.clothes_color;
weapon=cs.weapon;
sheild=cs.sheild;
head_top=cs.head_top;
head_mid=cs.head_mid;
head_bottom=cs.head_bottom;
strcpy(name,cs.name);
base_level=cs.base_level;
job_level=cs.job_level;
str=cs.str;
agi=cs.vit;
int_=cs.int_;
dex=cs.dex;
luk=cs.luk;
}
void sendMessage(char *msg)
{
int len;
len=mmo_map_npc_say(internal_fd,WFIFOP(internal_fd,0),internal_sd->npc_id,msg);
if(len>0)
WFIFOSET(internal_fd,len);
}
void sendMenu(char *options)
{
int len;
len=mmo_map_npc_select(internal_fd,WFIFOP(internal_fd,0),internal_sd->npc_id,options);
if(len>0)
WFIFOSET(internal_fd,len);
}
void sendNext()
{
int len;
len=mmo_map_npc_next(internal_fd,WFIFOP(internal_fd,0),internal_sd->npc_id);
if(len>0)
WFIFOSET(internal_fd,len);
}
void sendEnd()
{
int len;
len=mmo_map_npc_close(internal_fd,WFIFOP(internal_fd,0),internal_sd->npc_id);
if(len>0)
WFIFOSET(internal_fd,len);
menuSelect=0;
next=0;
}
void changeJob(int job)
{
mmo_map_jobchange(internal_fd,job);
}
void changeLook(int i, int j)
{
int len;
len=mmo_map_set_look(internal_fd,WFIFOP(internal_fd,0),internal_sd->account_id,i,j);
if(len>0)
mmo_map_sendarea(internal_fd,WFIFOP(internal_fd,0),len,0);
}
void statusChange(int status,int new)
{
mmo_map_update_param(internal_fd,status,new);
}
void changeSavePoint(char *name,int x, int y)
{
struct map_session_data *temp_sd;
temp_sd=session[internal_fd]->session_data;
strcpy(temp_sd->status.save_point.map,name);
temp_sd->status.save_point.x=x;
temp_sd->status.save_point.y=y;
}
void sendImage(char *name, int type)
{
int len;
len=send_image(internal_fd,WFIFOP(internal_fd,0),name,type);
if(len>0)
WFIFOSET(internal_fd,len);
}
unsigned char *parse_script(unsigned char *script)
{
int length =strlen(script);
char *final;
final=(char *)malloc(length+1);
script[length-1]=0;
script[length]=0;
strcpy(final,script+2);
return final;
}
void warp(char *map,int x, int y)
{
mmo_map_changemap(internal_fd,internal_sd,map,x,y,2);
}
void waitInput()
{
int len;
len=mmo_map_npc_amount_request(internal_fd,WFIFOP(internal_fd,0),internal_sd->npc_id);
if(len>0)
WFIFOSET(internal_fd,len);
}
int run_script(int fd,struct map_session_data *sd)
{
unsigned char *script;
struct map_session_data *temp_sd;
menuSelect=sd->local_reg[15];
input=sd->local_reg[14];
temp_sd=session[fd]->session_data;
internal_fd=fd;
internal_sd=sd;
get_char_data(temp_sd->status);
script=map_data[sd->mapno].npc[sd->npc_n]->u.script;
lua_dostring(L,script);
sd->local_reg[15]=0;
return(1);
}
int script_init()
{
menuSelect=0;
next=0;
L=lua_open(0);
if(L==NULL)
{
printf("Error with lua\n");
return(1);
}
tolua_ragnarok_open(L);
lua_baselibopen(L);
lua_strlibopen(L);
lua_mathlibopen(L);
return(0);
}
void script_close()
{
tolua_ragnarok_close(L);
lua_close(L);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -