hedgewars/uScript.pas
changeset 3346 967fd96f7373
parent 3337 75e7455c69ed
child 3368 791fa4664209
equal deleted inserted replaced
3345:25ad24233e77 3346:967fd96f7373
    51     uSound,
    51     uSound,
    52     uTeams,
    52     uTeams,
    53     uKeys;
    53     uKeys;
    54     
    54     
    55 var luaState : Plua_State;
    55 var luaState : Plua_State;
    56     ScriptAmmoStore : shortstring;
    56     ScriptAmmoLoadout : shortstring;
       
    57     ScriptAmmoProbability : shortstring;
       
    58     ScriptAmmoDelay : shortstring;
       
    59     ScriptAmmoReinforcement : shortstring;
    57     ScriptLoaded : boolean;
    60     ScriptLoaded : boolean;
    58     
    61     
    59 procedure ScriptPrepareAmmoStore; forward;
    62 procedure ScriptPrepareAmmoStore; forward;
    60 procedure ScriptApplyAmmoStore; forward;
    63 procedure ScriptApplyAmmoStore; forward;
    61 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay: Byte); forward;
    64 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay, reinforcement: Byte); forward;
    62 
    65 
    63 // wrapped calls //
    66 // wrapped calls //
    64 
    67 
    65 // functions called from lua:
    68 // functions called from lua:
    66 // function(L : Plua_State) : LongInt; Cdecl;
    69 // function(L : Plua_State) : LongInt; Cdecl;
   480     lc_setgearposition:= 0
   483     lc_setgearposition:= 0
   481 end;
   484 end;
   482 
   485 
   483 function lc_setammo(L : Plua_State) : LongInt; Cdecl;
   486 function lc_setammo(L : Plua_State) : LongInt; Cdecl;
   484 begin
   487 begin
   485     if lua_gettop(L) <> 4 then
   488     if lua_gettop(L) <> 5 then
   486         WriteLnToConsole('LUA: Wrong number of parameters passed to SetAmmo!')
   489         WriteLnToConsole('LUA: Wrong number of parameters passed to SetAmmo!')
   487     else
   490     else
   488         begin
   491         begin
   489         ScriptSetAmmo(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2), lua_tointeger(L, 3), lua_tointeger(L, 4));
   492         ScriptSetAmmo(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2), lua_tointeger(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5));
   490         end;
   493         end;
   491     lc_setammo:= 0
   494     lc_setammo:= 0
   492 end;
   495 end;
   493 ///////////////////
   496 ///////////////////
   494 
   497 
   691 var i: ShortInt;
   694 var i: ShortInt;
   692 begin
   695 begin
   693 // reset ammostore (quite unclean, but works?)
   696 // reset ammostore (quite unclean, but works?)
   694 uAmmos.freeModule;
   697 uAmmos.freeModule;
   695 uAmmos.initModule;
   698 uAmmos.initModule;
   696 ScriptAmmoStore:= '';
   699 ScriptAmmoLoadout:= '';
       
   700 ScriptAmmoDelay:= '';
       
   701 ScriptAmmoProbability:= '';
       
   702 ScriptAmmoReinforcement:= '';
   697 for i:=1 to ord(High(TAmmoType)) do
   703 for i:=1 to ord(High(TAmmoType)) do
   698     ScriptAmmoStore:= ScriptAmmoStore + '0000';
   704     begin
   699 end;
   705     ScriptAmmoLoadout:= ScriptAmmoLoadout + '0';
   700 
   706     ScriptAmmoProbability:= ScriptAmmoProbability + '0';
   701 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay: Byte);
   707     ScriptAmmoDelay:= ScriptAmmoDelay + '0';
   702 begin
   708     ScriptAmmoReinforcement:= ScriptAmmoReinforcement + '0';
   703 if (ord(ammo) < 1) or (count > 9) or (count < 0) or (propability < 0) or (propability > 8) or (delay < 0) or (delay > 9)then
   709     end;
       
   710 end;
       
   711 
       
   712 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay, reinforcement: Byte);
       
   713 begin
       
   714 if (ord(ammo) < 1) or (count > 9) or (count < 0) or (propability < 0) or (propability > 8) or (delay < 0) or (delay > 9) or (reinforcement < 0) or (reinforcement > 8) then
   704     exit;
   715     exit;
   705 ScriptAmmoStore[ord(ammo)]:= inttostr(count)[1];
   716 ScriptAmmoLoadout[ord(ammo)]:= inttostr(count)[1];
   706 ScriptAmmoStore[ord(ammo) + ord(high(TAmmoType))]:= inttostr(propability)[1];
   717 ScriptAmmoProbability[ord(ammo)]:= inttostr(propability)[1];
   707 ScriptAmmoStore[ord(ammo) + 2 * ord(high(TAmmoType))]:= inttostr(delay)[1];
   718 ScriptAmmoDelay[ord(ammo)]:= inttostr(delay)[1];
       
   719 ScriptAmmoReinforcement[ord(ammo)]:= inttostr(reinforcement)[1];
   708 end;
   720 end;
   709 
   721 
   710 procedure ScriptApplyAmmoStore;
   722 procedure ScriptApplyAmmoStore;
   711 var i : LongInt;
   723 var i : LongInt;
   712 begin
   724 begin
       
   725 SetAmmoLoadout(ScriptAmmoLoadout);
       
   726 SetAmmoProbability(ScriptAmmoProbability);
       
   727 SetAmmoDelay(ScriptAmmoDelay);
       
   728 SetAmmoReinforcement(ScriptAmmoReinforcement);
   713 for i:= 0 to Pred(TeamsCount) do
   729 for i:= 0 to Pred(TeamsCount) do
   714     AddAmmoStore(ScriptAmmoStore);
   730     AddAmmoStore;
   715 end;
   731 end;
   716 
   732 
   717 procedure initModule;
   733 procedure initModule;
   718 var at : TGearType;
   734 var at : TGearType;
   719     am : TAmmoType;
   735     am : TAmmoType;