hedgewars/uScript.pas
changeset 5547 2fe1d68a102c
parent 5529 9a47cff3910a
child 5549 ccfb9b8ab9d1
--- a/hedgewars/uScript.pas	Thu Aug 11 22:33:56 2011 -0400
+++ b/hedgewars/uScript.pas	Thu Aug 11 23:07:45 2011 -0400
@@ -153,7 +153,7 @@
 begin
     if lua_gettop(L) = 1 then
         begin
-        WriteLnToConsole('Lua: ' + lua_tostring(L ,1));
+        WriteLnToConsole('Lua: ' + StrPas(lua_tostring(L ,1)));
         end
     else
         LuaError('Lua: Wrong number of parameters passed to WriteLnToConsole!');
@@ -164,7 +164,7 @@
 begin
     if lua_gettop(L) = 1 then
         begin
-        ParseCommand(lua_tostring(L ,1), true);
+        ParseCommand(StrPas(lua_tostring(L ,1)), true);
         end
     else
         LuaError('Lua: Wrong number of parameters passed to ParseCommand!');
@@ -175,7 +175,7 @@
 begin
     if lua_gettop(L) = 5 then
         begin
-        ShowMission(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5));
+        ShowMission(StrPas(lua_tostring(L, 1)), StrPas(lua_tostring(L, 2)), StrPas(lua_tostring(L, 3)), lua_tointeger(L, 4), lua_tointeger(L, 5));
         end
     else
         LuaError('Lua: Wrong number of parameters passed to ShowMission!');
@@ -192,10 +192,10 @@
 function lc_addcaption(L : Plua_State) : LongInt; Cdecl;
 begin
     if lua_gettop(L) = 1 then
-        AddCaption(lua_tostring(L, 1), cWhiteColor, capgrpMessage)
+        AddCaption(StrPas(lua_tostring(L, 1)), cWhiteColor, capgrpMessage)
     else if lua_gettop(L) = 3 then
         begin
-        AddCaption(lua_tostring(L, 1), lua_tointeger(L, 2) shr 8, TCapGroup(lua_tointeger(L, 3)));
+        AddCaption(StrPas(lua_tostring(L, 1)), lua_tointeger(L, 2) shr 8, TCapGroup(lua_tointeger(L, 3)));
         end
     else
         LuaError('Lua: Wrong number of parameters passed to AddCaption!');
@@ -720,7 +720,7 @@
         gear:= GearByUID(lua_tointeger(L, 1));
         if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
 
-	    hogName:= lua_tostring(L, 2);
+	    hogName:= StrPas(lua_tostring(L, 2));
             gear^.Hedgehog^.Name:= hogName;
 
 	    FreeTexture(gear^.Hedgehog^.NameTagTex);
@@ -857,7 +857,7 @@
             vgear:= AddVisualGear(0, 0, vgtSpeechBubble, s, true);
             if vgear <> nil then
                begin
-               vgear^.Text:= lua_tostring(L, 2);
+               vgear^.Text:= StrPas(lua_tostring(L, 2));
                vgear^.Hedgehog:= gear^.Hedgehog;
                vgear^.FrameTicks:= lua_tointeger(L, 3);
                if (vgear^.FrameTicks < 1) or (vgear^.FrameTicks > 3) then vgear^.FrameTicks:= 1;
@@ -1115,6 +1115,7 @@
 
 function lc_addteam(L : Plua_State) : LongInt; Cdecl;
 var np: LongInt;
+    voice: shortstring;
 begin
     np:= lua_gettop(L);
     if (np < 5) or (np > 6) then
@@ -1124,11 +1125,17 @@
         end
     else
         begin
-        ParseCommand('addteam x ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 1), true);
-        ParseCommand('grave ' + lua_tostring(L, 3), true);
-        ParseCommand('fort ' + lua_tostring(L, 4), true);
-        ParseCommand('voicepack ' + lua_tostring(L, 5), true);
-        if (np = 6) then ParseCommand('flag ' + lua_tostring(L, 6), true);
+(*
+ FIXME FIXME FIXME FIXME
+ Something is very wrong here.
+ For some reason, if I assign voice after fort (or don't use the variable) it is empty.
+*)
+        voice:= StrPas(lua_tostring(L, 5));
+        ParseCommand('addteam x ' + StrPas(lua_tostring(L, 2)) + ' ' + StrPas(lua_tostring(L, 1)), true);
+        ParseCommand('grave ' + StrPas(lua_tostring(L, 3)), true);
+        ParseCommand('fort ' + StrPas(lua_tostring(L, 4)), true);
+        ParseCommand('voicepack ' + voice, true);
+        if (np = 6) then ParseCommand('flag ' + StrPas(lua_tostring(L, 6)), true);
         CurrentTeam^.Binds:= DefaultBinds
         // fails on x64
         //lua_pushinteger(L, LongInt(CurrentTeam));
@@ -1146,8 +1153,8 @@
         end
     else
         begin
-        temp:= lua_tostring(L, 4);
-        ParseCommand('addhh ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 3) + ' ' + lua_tostring(L, 1), true);
+        temp:= StrPas(lua_tostring(L, 4));
+        ParseCommand('addhh ' + StrPas(lua_tostring(L, 2)) + ' ' + StrPas(lua_tostring(L, 3)) + ' ' + StrPas(lua_tostring(L, 1)), true);
         ParseCommand('hat ' + temp, true);
         lua_pushinteger(L, CurrentHedgehog^.Gear^.uid);
         end;
@@ -1451,7 +1458,7 @@
         begin
         gear:= GearByUID(lua_tointeger(L, 1));
         if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
-            hat:= lua_tostring(L, 2);
+            hat:= StrPas(lua_tostring(L, 2));
             gear^.Hedgehog^.Hat:= hat;
             LoadHedgehogHat(gear, hat);
         end;
@@ -1487,7 +1494,7 @@
     WriteLnToConsole('Lua: Stack (' + inttostr(n) + ' elements):');
     for i:= 1 to n do
         if not lua_isboolean(luaState, i) then
-            WriteLnToConsole('Lua:  ' + inttostr(i) + ': ' + lua_tostring(luaState, i))
+            WriteLnToConsole('Lua:  ' + inttostr(i) + ': ' + StrPas(lua_tostring(luaState, i)))
         else if lua_toboolean(luaState, i) then
             WriteLnToConsole('Lua:  ' + inttostr(i) + ': true')
         else
@@ -1527,7 +1534,7 @@
 function ScriptGetString(name : shortstring) : shortstring;
 begin
 lua_getglobal(luaState, Str2PChar(name));
-ScriptGetString:= lua_tostring(luaState, -1);
+ScriptGetString:= StrPas(lua_tostring(luaState, -1));
 lua_pop(luaState, 1);
 end;
 
@@ -1604,7 +1611,7 @@
 if ret <> 0 then
     begin
     LuaError('Lua: Failed to load ' + name + '(error ' + IntToStr(ret) + ')');
-    LuaError('Lua: ' + lua_tostring(luaState, -1));
+    LuaError('Lua: ' + StrPas(lua_tostring(luaState, -1)));
     end
 else
     begin
@@ -1640,7 +1647,7 @@
 lua_getglobal(luaState, Str2PChar(fname));
 if lua_pcall(luaState, 0, 0, 0) <> 0 then
     begin
-    LuaError('Lua: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
+    LuaError('Lua: Error while calling ' + fname + ': ' + StrPas(lua_tostring(luaState, -1)));
     lua_pop(luaState, 1)
     end;
 GetGlobals;
@@ -1655,12 +1662,12 @@
 lua_pushstring(luaState, Str2PChar(value));
 if lua_pcall(luaState, 2, 1, 0) <> 0 then
     begin
-    LuaError('Lua: Error while calling ParseCommandOverride: ' + lua_tostring(luaState, -1));
+    LuaError('Lua: Error while calling ParseCommandOverride: ' + StrPas(lua_tostring(luaState, -1)));
     lua_pop(luaState, 1)
     end
 else
     begin
-    ParseCommandOverride:= lua_tostring(luaState, -1);
+    ParseCommandOverride:= StrPas(lua_tostring(luaState, -1));
     lua_pop(luaState, 1)
     end;
 end;
@@ -1693,7 +1700,7 @@
 ScriptCall:= 0;
 if lua_pcall(luaState, 4, 1, 0) <> 0 then
     begin
-    LuaError('Lua: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
+    LuaError('Lua: Error while calling ' + fname + ': ' + StrPas(lua_tostring(luaState, -1)));
     lua_pop(luaState, 1)
     end
 else