chuyiwen_gmsv/mylua/mapbase.c

98 lines
1.9 KiB
C
Raw Normal View History

2016-12-24 08:45:52 +08:00
#include <string.h>
#include <stdio.h>
#include "char.h"
#include "readmap.h"
#include "map_deal.h"
#include "char_base.h"
#include "mylua/base.h"
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
#include "lssproto_serv.h"
#ifdef _ALLBLUES_LUA
#ifdef _ALLBLUES_LUA_1_1
static int RandMap(lua_State *L)
{
lua_pushinteger(L, MAP_getfloorId(rand()% MAP_getMapNum()));
return 1;
}
static int RandXAndY(lua_State *L)
{
const int ff = luaL_checkint(L, 1);
int fx,fy;
int i;
for(i=0;i<50;i++){
fx = rand() % MAP_getfloorX(ff);
fy = rand() % MAP_getfloorY(ff);
if(MAP_walkAbleFromPoint( ff,fx,fy,0 )==TRUE){
lua_pushinteger(L, (fx << 16)|fy );
return 1;
}
}
lua_pushinteger(L, -1);
return 1;
}
static int getX(lua_State *L)
{
const int XandY = luaL_checkint(L, 1);
lua_pushinteger(L, (XandY >> 16)&0xFFFF );
return 1;
}
static int getY(lua_State *L)
{
const int XandY = luaL_checkint(L, 1);
lua_pushinteger(L, XandY&0xFFFF );
return 1;
}
static int getfloorX(lua_State *L)
{
const int floorid = luaL_checkint(L, 1);
lua_pushinteger(L, MAP_getfloorX(floorid) );
return 1;
}
static int getfloorY(lua_State *L)
{
const int floorid = luaL_checkint(L, 1);
lua_pushinteger(L, MAP_getfloorY(floorid) );
return 1;
}
static int getFloorName(lua_State *L)
{
const int floorid = luaL_checkint(L, 1);
char escapeshowstring[256];
char *showstr = MAP_getfloorShowstring(floorid);
getStringFromIndexWithDelim( showstr, "|", 1, escapeshowstring, sizeof( escapeshowstring));
lua_pushstring(L, escapeshowstring);
return 1;
}
static const luaL_Reg maplib[] = {
{"RandMap", RandMap},
{"RandXAndY", RandXAndY},
{"getfloorX", getfloorX},
{"getfloorY", getfloorY},
{"getFloorName", getFloorName},
{"getX", getX},
{"getY", getY},
{NULL, NULL}
};
LUALIB_API int luaopen_Map (lua_State *L) {
luaL_register(L, "map", maplib);
return 1;
}
#endif
#endif