Official Soldat Forums
Server Talk => Scripting Discussions and Help => Topic started by: mich1103 on April 18, 2010, 06:27:11 pm
-
Anyone have a mine script ?
I've searched on the forum but i dont find it .
-
Yes, first post :D.
I ripped it out of one of my larger scripts, so its pretty much fully tested.
-
Can i include the mine script to my shop script to make player able to bye mine ?
my shop script !
const
Color = $FF00FF00; //Color to be used.
psgpowa = 1;
psgtype = 14;
psgrang = 666;
psgspee = 75;
maxpsg = 5;
psgammo = 60; //took the liberty to invent it, since it was missing.
var
pname: string;
money: array[1..32] of integer;
statcost:integer;
giveid:integer;
psgcost:integer;
merccost:integer;
asd : string;
give,ammount,player:string;
sgx,sgy:array[1..maxpsg] of single;
sga,sgo,sgt:array[1..maxpsg] of byte;
sgd:array[1..maxpsg] of boolean;
invcost,medcost,nadecost,flamecost,vestcost,serkcost,clustcost,powercost,eaglecost: integer;
mp5cost,ak47cost,augcost,spascost,rugecost,m79cost,barrcost,minimcost,minigcost, allcost: integer;
procedure placesentry(x,y:single;ID,team:byte);
var n,f:byte;
begin
if getplayerstat(ID,'Ground')=true then begin
f:=maxpsg;
for n:=1 to maxpsg do begin
if sgd[n]=true then f:=f-1;
end;
if f=0 then DrawText(ID,'Maximum of '+inttostr(maxpsg)+' sentry guns on map reached.',250,RGB(0,255,0),0.10,150,400) else begin
for n:=1 to maxpsg do begin
if sgd[n]=false then break;
end;
sgx[n]:=x; sgy[n]:=y; sgo[n]:=ID; sgt[n]:=team; sga[n]:=psgammo; sgd[n]:=true;
DrawText(ID,'Sentry gun placed!',250,RGB(0,255,0),0.1,75,350);
end;
end else DrawText(ID,'You are in mid-air!',250,RGB(0,255,0),0.10,220,400);
end;
procedure ActivateServer();
begin
statcost := 25;
psgcost := 30;
merccost := 20;
invcost := 6;
medcost := 5;
nadecost := 5;
flamecost := 10;
vestcost := 5;
serkcost := 6;
clustcost := 5;
powercost := 17;
eaglecost := 7;
mp5cost := 8;
ak47cost := 9;
augcost := 8;
spascost := 9;
rugecost := 7;
m79cost := 9;
barrcost := 11;
minimcost := 8;
minigcost := 8;
allcost := 20;
end;
procedureOnJoinGame(ID, Team: byte);
begin
writeConsole(ID, 'Your Money is: $' + inttostr(money[ID]),Color);
writeConsole(ID, 'Do /shop to see the shop, do /money to see your money !' + inttostr(money[ID]), Color);
DrawText(ID,$ + inttostr(money[ID]),300,Color,0.08,1,1);
ifFileExists('scripts/shop/'+ GetPlayerStat(ID,'name') + '.txt') then begin
asd := ReadFile('scripts/shop/'+ GetPlayerStat(ID,'name') + '.txt');
money[ID] := StrToInt(Copy(asd,0,length(asd)-2));
endelsemoney[ID] := 0
end;
end;
procedure OnPlayerKill(Killer, Victim: byte;Weapon: string);
begin
if Killer = Victim then
begin
writeConsole(Killer, 'you cant kill yourself for money !', Color);
end else
begin
money[Killer] := money[Killer]+1;
writeConsole(Killer, 'You just got $1 your money is now: $' + inttostr(money[Killer]), Color);
end;
end;
function OnPlayerCommand(ID: Byte; Text: string): boolean;
begin
give := GetPiece(LowerCase(Text), ' ', 0);
ammount := GetPiece(LowerCase(Text), ' ', 1);
player := GetPiece(Text, ' ', 2);
if give = '/give' then
begin
if money[ID] > strtoint(ammount) then
begin
giveid := NameToID(player);
if giveid > 0 then
begin
money[ID] := money[ID] - strtoint(ammount);
money[giveid] := money[giveid] + strtoint(ammount);
writeconsole(ID, 'You gave $' + ammount + ' to: ' + IDToName(giveid) + ', Your money is now: $' + inttostr(money[ID]) , Color);
writeconsole(giveid, 'You recived $' + ammount + ' from: ' + IDToName(ID) + ', Your money is now: $' + inttostr(money[giveid]), Color);
end else
begin
writeconsole(ID, 'That person does not exist.', Color);
end;
end else
begin
writeconsole(ID, 'You don''t have enough money', Color);
end;
end;
if regExpMatch('^/(money|moneys)$', Text) then
begin
writeConsole(ID, 'Your money is: $' + inttostr(money[ID]), Color);
end;
if regExpMatch('^/(commands|shop|spawn|help)$', Text) then
begin
writeConsole(ID, '#############SHOP#########################', Color);
writeConsole(ID, '#commands: #', Color);
writeConsole(ID, '#/stat $25 (spawn a turret) #', Color);
writeConsole(ID, '#/psg $30 (Spawn a sentry gun) #', Color);
writeConsole(ID, '#/merc $20 (Spawn a mercenary) #', Color);
writeConsole(ID, '#/inv $6 (Give you the invisibility) #', Color);
writeConsole(ID, '#/med $5 (Give you a medic kit) #', Color);
writeConsole(ID, '#/nade $5 (Give to you some nade) #', Color);
writeConsole(ID, '#/flame $10 (Give you a flamer) #', Color);
writeConsole(ID, '#/vest $5 (Give you a Bullet proof) #', Color);
writeConsole(ID, '#/serk $6 (Give you the RAGE !!!) #', Color);
writeConsole(ID, '#/clust $5 (Give you some cluster) #', Color);
writeConsole(ID, '#/power $17 (Spawn all bonus above you) #', Color);
writeConsole(ID, '#/eagle $7 (Give you a Desert Eagle) #', Color);
writeConsole(ID, '#/mp5 $8 (Give you a Hk mp5) #', Color);
writeConsole(ID, '#/ak47 $9 (Give you a Ak 47) #', Color);
writeConsole(ID, '#/aug $8 (Give you a Steyr AUG) #', Color);
writeConsole(ID, '#/spas $9 (Give you a spas 12) #', Color);
writeConsole(ID, '#/ruge $7 (Give you a Ruger) #', Color);
writeConsole(ID, '#/m79 $9 (Give you a m79) #', Color);
writeConsole(ID, '#/barr $11 (Give you a Barret) #', Color);
writeConsole(ID, '#/minim $8 (Give you a FN minimi) #', Color);
writeConsole(ID, '#/minig $8 (Give you a Minigun) #', Color);
writeConsole(ID, '#/guns 20(Spawn all gun above you) #', Color);
writeConsole(ID, '#############END##########################', Color);
end;
if regExpMatch('^/(stationary|stat|turrent)$', Text) then
begin
if money[ID] >= statcost then
begin
money[ID] := money[ID] - statcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,15);
writeconsole(ID, 'You bought a Stat Gun for $25, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color);
end;
end;
result := false;
if regExpMatch('^/(psg)$', Text) then begin
if money[ID] >= psgcost then begin
money[ID] := money[ID] - psgcost;
placesentry(getplayerstat(ID,'x'),getplayerstat(ID,'y'),ID,getplayerstat(ID,'team'));
writeconsole(ID, 'You bought a Sentry Gun for $30, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color);
end;
end;
if regExpMatch('^/(merc)$', Text) then
begin
if money[ID] >= merccost then
begin
money[ID] := money[ID] - merccost;
Command('/addbot1 mercenary');
writeconsole(ID, 'Youve engage a mercenary for $20, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color);
end;
end;
if regExpMatch('^/(desert eagles|eagle|deagles|deserteagles)$', Text) then
begin
if money[ID] >= eaglecost then
begin
money[ID] := money[ID] - eaglecost;
forceWeapon(ID,1,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought deagles for $7, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(hkmp5|mp5|hk)$', Text) then
begin
if money[ID] >= mp5cost then
begin
money[ID] := money[ID] - mp5cost;
forceWeapon(ID,2,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a HK MP5 for $8, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(ak47)$', Text) then
begin
if money[ID] >= ak47cost then
begin
money[ID] := money[ID] - ak47cost;
forceWeapon(ID,3,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a AK47 for $9, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(steyr|aug)$', Text) then
begin
if money[ID] >= augcost then
begin
money[ID] := money[ID] - augcost;
forceWeapon(ID,4,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a Steyr Aug for $8, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(spas 12|spas|spas12)$', Text) then
begin
if money[ID] >= spascost then
begin
money[ID] := money[ID] - spascost;
forceWeapon(ID,5,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a SPAS12 for $9, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(ruger|ruge|ruger77)$', Text) then
begin
if money[ID] >= rugecost then
begin
money[ID] := money[ID] - rugecost;
forceWeapon(ID,6,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a Ruger for $7, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(m79)$', Text) then
begin
if money[ID] >= m79cost then
begin
money[ID] := money[ID] - m79cost;
forceWeapon(ID,7,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a M79 for $9, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(barreta|barr|barrett m82a1|barret|barret m)$', Text) then
begin
if money[ID] >= barrcost then
begin
money[ID] := money[ID] - barrcost;
forceWeapon(ID,8,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a Barreta for $11, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(fn minimi|minim|fn)$', Text) then
begin
if money[ID] >= minimcost then
begin
money[ID] := money[ID] - minimcost;
forceWeapon(ID,9,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a FN Minimi for $8, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(minigun|minig)$', Text) then
begin
if money[ID] >= minigcost then
begin
money[ID] := money[ID] - minigcost;
forceWeapon(ID,10,GetPlayerStat(ID,'Primary'),0);
writeconsole(ID, 'You bought a Minigun for $8, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(medic|med|health|med pack)$', Text) then
begin
if money[ID] >= medcost then
begin
money[ID] := money[ID] - medcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,16);
writeconsole(ID, 'You bought a Medkit for $5, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(grenade|nade)$', Text) then
begin
if money[ID] >= nadecost then
begin
money[ID] := money[ID] - nadecost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,17);
writeconsole(ID, 'You bought some Grenades for $5, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(cluster|clust|clustergrandes|clusternades|clustnades)$', Text) then
begin
if money[ID] >= clustcost then
begin
money[ID] := money[ID] - clustcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,22);
writeconsole(ID, 'You bought some Cluster Greanades for $5, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(armor|vest|bulletproofvest)$', Text) then
begin
if money[ID] >= vestcost then
begin
money[ID] := money[ID] - vestcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,19);
writeconsole(ID, 'You bought a Bullet Proof Vest for $5, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(boxes|power|box)$', Text) then
begin
if money[ID] >= powercost then
begin
money[ID] := money[ID] - powercost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,16);
SpawnObject(GetPlayerStat(ID,'x')+30,GetPlayerStat(ID,'y')-20,17);
SpawnObject(GetPlayerStat(ID,'x')+40,GetPlayerStat(ID,'y')-20,18);
SpawnObject(GetPlayerStat(ID,'x')+50,GetPlayerStat(ID,'y')-20,19);
SpawnObject(GetPlayerStat(ID,'x')+60,GetPlayerStat(ID,'y')-20,20);
SpawnObject(GetPlayerStat(ID,'x')+70,GetPlayerStat(ID,'y')-20,21);
SpawnObject(GetPlayerStat(ID,'x')+80,GetPlayerStat(ID,'y')-20,22);
writeconsole(ID, 'You bought all Powerups for $17, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(preditor|inv|invisible)$', Text) then
begin
if money[ID] >= invcost then
begin
money[ID] := money[ID] - invcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,20);
writeconsole(ID, 'You bought a Preditor Box for $6, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(flame god|flame|flamegodmode|flame god mode)$', Text) then
begin
if money[ID] >= flamecost then
begin
money[ID] := money[ID] - flamecost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,18);
writeconsole(ID, 'You bought a Flame God Box for $10, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(berseker|serk)$', Text) then
begin
if money[ID] >= serkcost then
begin
money[ID] := money[ID] - serkcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,21);
writeconsole(ID, 'You bought a Berseker Box for $6, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color); end;
end;
if regExpMatch('^/(gunz|guns|weapons|weaps|weps)$', Text) then
begin
if money[ID] >= allcost then
begin
money[ID] := money[ID] - allcost;
SpawnObject(GetPlayerStat(ID,'x')+20,GetPlayerStat(ID,'y')-20,1);
SpawnObject(GetPlayerStat(ID,'x')+30,GetPlayerStat(ID,'y')-20,2);
SpawnObject(GetPlayerStat(ID,'x')+40,GetPlayerStat(ID,'y')-20,3);
SpawnObject(GetPlayerStat(ID,'x')+50,GetPlayerStat(ID,'y')-20,4);
SpawnObject(GetPlayerStat(ID,'x')+60,GetPlayerStat(ID,'y')-20,5);
SpawnObject(GetPlayerStat(ID,'x')+70,GetPlayerStat(ID,'y')-20,6);
SpawnObject(GetPlayerStat(ID,'x')+80,GetPlayerStat(ID,'y')-20,7);
SpawnObject(GetPlayerStat(ID,'x')-20,GetPlayerStat(ID,'y')-20,8);
SpawnObject(GetPlayerStat(ID,'x')-30,GetPlayerStat(ID,'y')-20,9);
SpawnObject(GetPlayerStat(ID,'x')-40,GetPlayerStat(ID,'y')-20,10);
SpawnObject(GetPlayerStat(ID,'x')-50,GetPlayerStat(ID,'y')-20,11);
SpawnObject(GetPlayerStat(ID,'x')-60,GetPlayerStat(ID,'y')-20,12);
SpawnObject(GetPlayerStat(ID,'x')-70,GetPlayerStat(ID,'y')-20,13);
SpawnObject(GetPlayerStat(ID,'x')-80,GetPlayerStat(ID,'y')-20,14);
writeconsole(ID, 'You bought all Weapon for $20, you have $' + inttostr(money[ID]), Color);
end else begin writeconsole(ID, 'You do not have enough money', Color);
end;
end;
end;
procedure OnMapChange(newmap:string);
var n:byte;
begin
for n:=1 to maxpsg do begin sgd[n]:=false; end;
end;
procedure OnLeaveGame(ID,team:byte;kicked:boolean);
var n:byte;
begin
for n:=1 to maxpsg do
begin if sgo[n]=ID then sgd[n]:= false;
end;
WriteFile('scripts/shop/'+ GetPlayerStat(ID,'name') + '.txt',IntToStr(money[ID]));
end;
Procedure AppOnIdle(Ticks: Integer);
Var N, K: Byte;
X, Y, Dista: Single;
Begin
For N := 1 To maxpsg Do Begin
if sgd[n] = True Then Begin
CreateBullet(sgx[n],sgy[n],0,0,0,5,sgo[n]);
For K := 1 To 32 Do Begin
GetPlayerXy(K,X,Y);
if GetPlayerStat(K,'Team') <> sgt[n] Then if GetPlayerStat(K,'Alive') = True Then if RayCast(sgx[n],sgy[n],x,y,dista,psgrang) = True Then if dista <= psgrang Then Begin
x := ((x-sgx[n]) / dista)*psgspee;
y := ((y-sgy[n]) / dista)*psgspee;
CreateBullet(sgx[n],sgy[n],x,y,psgpowa,psgtype,sgo[n]); sga[n]:=sga[n]-1;
if sga[n] = 0 Then Begin
sgd[n] := false;
Writeconsole(sgo[n],'One of your sentry guns ran out of ammo.',$0000FF00);
end;
Break;
end;
end;
end;
end;
end;
procedure OnPlayerSpeak(ID:Byte;Text:String);
begin
if (Text='!money')
then begin
writeConsole(ID, 'Your money is: $' + inttostr(money[ID]), Color);
end;
if(Text='!shop')
then begin
writeConsole(ID, '#############SHOP#########################', Color);
writeConsole(ID, '#commands: #', Color);
writeConsole(ID, '#/stat $25 (spawn a turret) #', Color);
writeConsole(ID, '#/psg $30 (Spawn a sentry gun) #', Color);
writeConsole(ID, '#/merc $20 (Spawn a mercenary) #', Color);
writeConsole(ID, '#/inv $6 (Give you the invisibility) #', Color);
writeConsole(ID, '#/med $5 (Give you a medic kit) #', Color);
writeConsole(ID, '#/nade $5 (Give to you some nade) #', Color);
writeConsole(ID, '#/flame $10 (Give you a flamer) #', Color);
writeConsole(ID, '#/vest $5 (Give you a Bullet proof) #', Color);
writeConsole(ID, '#/serk $6 (Give you the RAGE !!!) #', Color);
writeConsole(ID, '#/clust $5 (Give you some cluster) #', Color);
writeConsole(ID, '#/power $17 (Spawn all bonus above you) #', Color);
writeConsole(ID, '#/eagle $7 (Give you a Desert Eagle) #', Color);
writeConsole(ID, '#/mp5 $8 (Give you a Hk mp5) #', Color);
writeConsole(ID, '#/ak47 $9 (Give you a Ak 47) #', Color);
writeConsole(ID, '#/aug $8 (Give you a Steyr AUG) #', Color);
writeConsole(ID, '#/spas $9 (Give you a spas 12) #', Color);
writeConsole(ID, '#/ruge $7 (Give you a Ruger) #', Color);
writeConsole(ID, '#/m79 $9 (Give you a m79) #', Color);
writeConsole(ID, '#/barr $11 (Give you a Barret) #', Color);
writeConsole(ID, '#/minim $8 (Give you a FN minimi) #', Color);
writeConsole(ID, '#/minig $8 (Give you a Minigun) #', Color);
writeConsole(ID, '#/guns 20(Spawn all gun above you) #', Color);
writeConsole(ID, '#############END##########################', Color);
end;
end;
-
Yes you could, all you would have to do is change up the onplayercommand() part, make it check to see if there is enough money, and then if there is do LayMine(ID); and decrese the money.
-
only that ? Ive tought that i need to put the LayMine script on it !
-
You need to put it all in your shop script, but you only need to edit the OnPlayerCommand() part to make mines buyable.
-
Do i need to put the var of the mine script in the shop script ?
Do i need to put he const with the const of the shop ?
-
Do i need to put the var of the mine script in the shop script ?
Do i need to put he const with the const of the shop ?
of course you do, you silly fucker. And make sure identifier names don't overlap. To put it in other words to make sure you understand - change variable/const/function names in one script if some variable/const/functions have the same name in the other script. Otherwise it will now work like it should
-
Do i need to put the var of the mine script in the shop script ?
Do i need to put he const with the const of the shop ?
Yes.