[Fixing] Y NO WERK!?

This commit is contained in:
Allanis 2013-05-05 21:07:07 +01:00
parent e2bab9f22b
commit c769e71c72
4 changed files with 22 additions and 17 deletions

View File

@ -67,13 +67,13 @@ function create()
end end
if misn_type == "Cargo" then if misn_type == "Cargo" then
misn_setDesc(string.format(misn_desc[1], planet, system, carg_mass, carg_type)) misn.setDesc(string.format(misn_desc[1], planet, system, carg_mass, carg_type))
reward = misn_dist * carg_mass * (250+rnd.int(150)) + reward = misn_dist * carg_mass * (250+rnd.int(150)) +
carg_mass * (150+rnd.int(75)) + carg_mass * (150+rnd.int(75)) +
rnd.int(1500) rnd.int(1500)
elseif misn_type == "Rush" then elseif misn_type == "Rush" then
misn_time = time.get() + time.units(2) + misn_time = time.get() + time.units(2) +
rnd.int(time.units(2), time.units(4)) * misn_dest rnd.int(time.units(2), time.units(4)) * misn_dist
misn.setDesc(string.format(misn_desc[2], planet, system, misn.setDesc(string.format(misn_desc[2], planet, system,
carg_mass, carg_type, time.str(misn_time), carg_mass, carg_type, time.str(misn_time),
time.str(misn_time), time.str(misn_time-time.get()))) time.str(misn_time), time.str(misn_time-time.get())))

View File

@ -1,5 +1,4 @@
#include "lua.h" #include "lua.h"
#include "lualib.h"
#include "lauxlib.h" #include "lauxlib.h"
#include "hook.h" #include "hook.h"
@ -67,7 +66,7 @@ static int misn_setReward(lua_State* L);
static int misn_factions(lua_State* L); static int misn_factions(lua_State* L);
static int misn_accept(lua_State* L); static int misn_accept(lua_State* L);
static int misn_finish(lua_State* L); static int misn_finish(lua_State* L);
static const luaL_Reg misn_methods[] = { static const luaL_reg misn_methods[] = {
{ "setTitle", misn_setTitle }, { "setTitle", misn_setTitle },
{ "setDesc", misn_setDesc }, { "setDesc", misn_setDesc },
{ "setReward", misn_setReward }, { "setReward", misn_setReward },
@ -93,7 +92,7 @@ static int space_getPlanet(lua_State* L);
static int space_getSystem(lua_State* L); static int space_getSystem(lua_State* L);
static int space_landName(lua_State* L); static int space_landName(lua_State* L);
static int space_jumpDist(lua_State* L); static int space_jumpDist(lua_State* L);
static const luaL_Reg space_methods[] = { static const luaL_reg space_methods[] = {
{ "getPlanet", space_getPlanet }, { "getPlanet", space_getPlanet },
{ "getSystem", space_getSystem }, { "getSystem", space_getSystem },
{ "landName", space_landName }, { "landName", space_landName },
@ -118,7 +117,7 @@ static int player_addCargo(lua_State* L);
static int player_rmCargo(lua_State* L); static int player_rmCargo(lua_State* L);
static int player_pay(lua_State* L); static int player_pay(lua_State* L);
static int player_msg(lua_State* L); static int player_msg(lua_State* L);
static const luaL_Reg player_methods[] = { static const luaL_reg player_methods[] = {
{ "freeCargo", player_freeSpace }, { "freeCargo", player_freeSpace },
{ "addCargo", player_addCargo }, { "addCargo", player_addCargo },
{ "rmCargo", player_rmCargo }, { "rmCargo", player_rmCargo },
@ -129,7 +128,7 @@ static const luaL_Reg player_methods[] = {
// RND. // RND.
static int rnd_int(lua_State*L); static int rnd_int(lua_State*L);
static const luaL_Reg rnd_methods[] = { static const luaL_reg rnd_methods[] = {
{ "int", rnd_int }, { "int", rnd_int },
{ 0, 0 } { 0, 0 }
}; };
@ -138,7 +137,7 @@ static const luaL_Reg rnd_methods[] = {
static int tk_msg(lua_State* L); static int tk_msg(lua_State* L);
static int tk_yesno(lua_State* L); static int tk_yesno(lua_State* L);
static int tk_input(lua_State* L); static int tk_input(lua_State* L);
static const luaL_Reg tk_methods[] = { static const luaL_reg tk_methods[] = {
{ "msg", tk_msg }, { "msg", tk_msg },
{ "yesno", tk_yesno }, { "yesno", tk_yesno },
{ "input", tk_input }, { "input", tk_input },
@ -150,7 +149,7 @@ static int hook_land(lua_State* L);
static int hook_takeoff(lua_State* L); static int hook_takeoff(lua_State* L);
static int hook_time(lua_State* L); static int hook_time(lua_State* L);
static int hook_pilotDeath(lua_State* L); static int hook_pilotDeath(lua_State* L);
static const luaL_Reg hook_methods[] = { static const luaL_reg hook_methods[] = {
{ "land", hook_land }, { "land", hook_land },
{ "takeoff", hook_takeoff }, { "takeoff", hook_takeoff },
{ "time", hook_time }, { "time", hook_time },
@ -167,8 +166,8 @@ int misn_loadLibs(lua_State* L) {
luaL_register(L, "time", time_methods); luaL_register(L, "time", time_methods);
luaL_register(L, "player", player_methods); luaL_register(L, "player", player_methods);
luaL_register(L, "rnd", rnd_methods); luaL_register(L, "rnd", rnd_methods);
luaL_register(L, "hook", hook_methods);
luaL_register(L, "tk", tk_methods); luaL_register(L, "tk", tk_methods);
luaL_register(L, "hook", hook_methods);
return 0; return 0;
} }
@ -178,6 +177,7 @@ int misn_run(Mission* misn, char* func) {
char* err; char* err;
cur_mission = misn; cur_mission = misn;
misn_delete = 0;
lua_getglobal(misn->L, func); lua_getglobal(misn->L, func);
if((ret = lua_pcall(misn->L, 0, 0, 0))) { if((ret = lua_pcall(misn->L, 0, 0, 0))) {
@ -252,6 +252,7 @@ static int misn_factions(lua_State* L) {
dat = cur_mission->data; dat = cur_mission->data;
// We'll push all the factions in table form.
lua_newtable(L); lua_newtable(L);
for(i = 0; i < dat->avail.nfactions; i++) { for(i = 0; i < dat->avail.nfactions; i++) {
lua_pushnumber(L, i+1); // Index, starts with 1. lua_pushnumber(L, i+1); // Index, starts with 1.
@ -471,7 +472,7 @@ static int space_getPlanet(lua_State* L) {
i = lua_tonumber(L, -1); i = lua_tonumber(L, -1);
planets = space_getFactionPlanet(&nplanets, &i, 1); planets = space_getFactionPlanet(&nplanets, &i, 1);
} }
else if(lua_isstring(L, 1)) { else if(lua_isstring(L, -1)) {
i = faction_get((char*) lua_tostring(L, -1)); i = faction_get((char*) lua_tostring(L, -1));
planets = space_getFactionPlanet(&nplanets, &i, 1); planets = space_getFactionPlanet(&nplanets, &i, 1);
} }
@ -719,6 +720,7 @@ static int hook_generic(lua_State* L, char* stack) {
MIN_ARGS(1); MIN_ARGS(1);
// Make sure mission is a player mission.
for(i = 0; i < MISSION_MAX; i++) for(i = 0; i < MISSION_MAX; i++)
if(player_missions[i].id == cur_mission->id) if(player_missions[i].id == cur_mission->id)
break; break;

View File

@ -82,6 +82,7 @@ static int mission_init(Mission* mission, MissionData* misn) {
luaopen_string(mission->L); // string.format can be very useful. luaopen_string(mission->L); // string.format can be very useful.
misn_loadLibs(mission->L); // Load our custom libraries. misn_loadLibs(mission->L); // Load our custom libraries.
// Load the file.
buf = pack_readfile(DATA, misn->lua, &bufsize); buf = pack_readfile(DATA, misn->lua, &bufsize);
if(luaL_dobuffer(mission->L, buf, bufsize, misn->lua) != 0) { if(luaL_dobuffer(mission->L, buf, bufsize, misn->lua) != 0) {
ERR("Error loading mission file: %s", misn->lua); ERR("Error loading mission file: %s", misn->lua);
@ -301,7 +302,7 @@ static MissionData* mission_parse(const xmlNodePtr parent) {
do { do {
if(xml_isNode(cur, "unique")) if(xml_isNode(cur, "unique"))
mis_setFlag(tmp, MISSION_UNIQUE); mis_setFlag(tmp, MISSION_UNIQUE);
} while((cur = cur->next)); } while(xml_nextNode(cur));
} }
else if(xml_isNode(node, "avail")) { // Mission availability. else if(xml_isNode(node, "avail")) { // Mission availability.
cur = node->children; cur = node->children;
@ -328,9 +329,9 @@ static MissionData* mission_parse(const xmlNodePtr parent) {
} }
else if(xml_isNode(cur, "req")) else if(xml_isNode(cur, "req"))
tmp->avail.req = strdup(xml_get(cur)); tmp->avail.req = strdup(xml_get(cur));
} while((cur = cur->next)); } while(xml_nextNode(cur));
} }
} while((node = node->next)); } while(xml_nextNode(node));
#define MELEMENT(o,s) \ #define MELEMENT(o,s) \
if(o) WARN("Mission '%s' missing/invalid '"s"' element", tmp->name) if(o) WARN("Mission '%s' missing/invalid '"s"' element", tmp->name)
MELEMENT(tmp->lua==NULL, "lua"); MELEMENT(tmp->lua==NULL, "lua");
@ -371,7 +372,7 @@ int missions_load(void) {
memcpy(mission_stack+mission_nstack-1, tmp, sizeof(MissionData)); memcpy(mission_stack+mission_nstack-1, tmp, sizeof(MissionData));
free(tmp); free(tmp);
} }
} while((node = node->next)); } while(xml_nextNode(node));
xmlFreeDoc(doc); xmlFreeDoc(doc);
free(buf); free(buf);

View File

@ -1016,6 +1016,8 @@ void space_exit(void) {
int i,j; int i,j;
// Free the names. // Free the names.
//if(planetname_stack) free(planetname_stack);
//if(systemname_stack) free(systemname_stack);
if(planetname_stack) { if(planetname_stack) {
free(planetname_stack); free(planetname_stack);
planetname_stack = NULL; planetname_stack = NULL;