0 Members and 1 Guest are viewing this topic.
const//TeamsALPHA = 1;BRAVO = 2;CHARLIE = 3;DELTA = 4;SPECTATOR = 5;HP_PER_LEVEL = 200;MAX_LVL = 10;EP_PER_LEVEL = 100;//Game ModesDEATHMATCH = 0;POINTMATCH = 1;TEAMMATCH = 2;CTF = 3;RAMBO = 4;INF = 5;HTF = 6;SERVER = 255;type tplayer = record name: string; ep,level,maxhp: integer; end;var soldier: array[1..32] of tplayer;function GetEP(Killer,Victim:string): integer;var KID,VID,multiplier,lvldif,EP: integer;begin KID:=NametoID(Killer); VID:=NametoID(Victim); lvldif:=soldier[VID].level-soldier[KID].level; multiplier:=100 + 10 * lvldif; If multiplier<40 then multiplier:=40; EP:=1000 + (soldier[VID].level * EP_PER_LEVEL * multiplier DIV 100); Result:=EP;end;function MaxEP(ID: integer): integer;begin Result:=2200 + (soldier[ID].level * 2000) + (soldier[ID].level * soldier[ID].level * 200);end;{procedure Heal(ID,percent,absolute: intteger);begin DoDamage(ID,(-1) * soldier.[ID].maxhp * percentage DIV 100 - absolute);end;} procedure GainLvl(ID: integer);begin soldier[ID].level:=soldier[ID].level+1; Command('say ' + IDtoName(ID) + ' reached Level ' + inttostr(soldier[ID].level)); soldier[ID].maxhp:=4000 + HP_PER_LEVEL * soldier[ID].level; //Heal(ID,100,0);end;procedure ActivateServer();beginend;procedure AppOnIdle(Ticks: integer);beginend;procedure OnCommand(ID: integer;Text: string);beginend;function OnRequestGame(IP: string;State: integer):integer;beginResult := State;end;procedure OnJoinGame(IP, Nickname: string;Team: byte);beginend;procedure OnJoinTeam(IP, Nickname: string;Team: byte);var JID: integer;begin JID:=IPtoID(IP); soldier[JID].level:=0; soldier[JID].ep:=0; soldier[JID].maxhp:=4000; soldier[JID].name:=Nickname;end;procedure OnLeaveGame(IP, Nickname: string;Team: byte);beginend;procedure OnFlagGrab(ID: integer;TeamFlag: byte;GrabbedInBase: boolean);beginend;procedure OnFlagReturn(ID: integer;TeamFlag: byte);beginend;procedure OnFlagScore(ID: integer;TeamFlag: byte);beginend;procedure OnPlayerKill(Killer,Victim,Weapon: string);var EP,KID,VID: integer;begin KID:=NametoID(Killer); VID:=NametoID(Victim); If KID=VID then begin If soldier[KID].ep > 1000 + soldier[KID].level * EP_PER_LEVEL then soldier[KID].ep:=soldier[KID].ep - (1000 + soldier[KID].level * EP_PER_LEVEL) else soldier[KID].ep:=0; end else begin EP:=GetEP(Killer,Victim); soldier[KID].ep:=soldier[KID].ep + EP; If soldier[KID].ep >= MaxEP(KID) then begin If soldier[KID].level >= MAX_LVL then else GainLvl(KID); end; end; end;procedure OnPlayerRespawn(ID: integer);beginend;procedure OnPlayerSpeak(Name,Text: string);beginend;procedure OnAdminConnect(IP: string);beginend;procedure OnAdminDisconnect(IP: string);beginend;procedure OnAdminMessage(IP, Msg: string);beginend;
but you can make summon spells for example that summon like a couple of boogie men that guard your base for let's say 10 seconds.
Someone who joins in the middle of a map, at a server running this script, will have no change. Did you think about it ?
procedure OnJoinTeam(IP, Nickname: string;Team: byte);var JID: integer;begin JID:=IPtoID(IP); soldier[JID].level:=0; soldier[JID].ep:=0; soldier[JID].maxhp:=4000; soldier[JID].name:=Nickname;end;
ya well he will start start at lvl 0, and he'll suck for the duration of that round... i could implement some algorithm that makes him start with the lowest level among the other players, starting at that level with 0 Ep. that'd fix it a bit thanks for reminding me of that.
procedure OnJoinTeam(IP, Nickname: string;Team: byte);var i,JID,temp: integer;begin temp:=0; JID:=IPtoID(IP); soldier[JID].level:=1; If NumPlayers > 1 then begin for i:=1 to 32 do If soldier[i].level > temp then temp:=soldier[i].level; soldier[JID].level:=temp; end; soldier[JID].ep:=0; soldier[JID].maxhp:=4000; soldier[JID].name:=Nickname;end;
you can't do anything classic, like a fireball, but you can make summon spells for example that summon like a couple of boogie men that guard your base for let's say 10 seconds. it'll be a new and unique expirience imo.i also tried scripting "evolvable" weapons, but that requires to load different weapon.inis, and everytime you change the ini to load a weapon for a guy that reached a new level, everyone and not only that one person will get the gun. that's a so far unsolvable problem and improvable weapons will therefore not be implemented