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; |