Author Topic: Auto Aiming Missile 1.6  (Read 16389 times)

0 Members and 1 Guest are viewing this topic.

Offline tk

  • Soldier
  • **
  • Posts: 235
Auto Aiming Missile 1.6
« on: November 10, 2008, 04:17:33 pm »
Script Name: Auto Aiming Missile
Script Description: Creates a missile which chases a target.
Original Author(s): tk
Core Version: 2.6.3
Full Description:
Creates a flame missile which chases a given target. Missile is able to dodge near polys.
NOTE: Missile() must be threaded while calling it by AppOnIdle(), uses Sleep() function.

procedure Missile(owner_ID, target_ID: Byte; X, Y: Single);
Parameters: Owner's ID, target's ID, Position of start;








Quote
const
   rocketFuel = 45;   // default 45;
   accuracy = 40; //0 - the best accuracy, default 40;
   acceleration = 3; // default 3;
   flametraceMovement = 2; // default 2;

procedure nova(X,Y,dir_x,dir_y,r,speed,power: single; n: word; style, id: byte);
var
   angle,sine,cosine: single;
begin
   angle:=6.28318/n;
   for n:=n downto 1 do
   begin
      sine:=sin(angle*n);
      cosine:=cos(angle*n);
      CreateBullet(cosine*r + X, sine*r + Y,cosine*speed + dir_x,sine*speed + dir_y,power, style, ID);
   end;
end;

procedure Missile(owner_ID, target_ID: Byte; X, Y: Single);
{v. 1.6}
var
   poly_coll, target_coll: Boolean;
   n, interval: Word;
   X2, Y2, dist, next_dist_x, next_dist_y, prev_dist_x, prev_dist_y, rd: Single;
begin
   GetPlayerXY(target_ID,X2,Y2);
   dist:=Distance(X,Y,X2,Y2);
   next_dist_x:=(X2-X)/(dist/10);
   next_dist_y:=(Y2-Y)/(dist/10);
   X:=X + next_dist_x;
   Y:=Y + next_dist_y;
   prev_dist_x:=next_dist_x;
   prev_dist_y:=next_dist_y;
   interval:=40;
   while n < rocketFuel do
   begin
      Sleep(interval);
      next_dist_x:=((X2-X)/(dist/(20+accuracy*2))+prev_dist_x*accuracy) / (accuracy+1);
      next_dist_y:=((Y2-Y)/(dist/(24+accuracy*2))+prev_dist_y*accuracy) / (accuracy+1);
      prev_dist_x:=next_dist_x;
      prev_dist_y:=next_dist_y;
      X:=X + next_dist_x;
      Y:=Y + next_dist_y;
      GetPlayerXY(target_ID,X2,Y2);
      dist:=Distance(X,Y,X2,Y2);
      if dist > 80 then //poly dodging
      begin
         if not rayCast(X,Y,X+15,Y,rd,16) then X:=X - 15 else
            if not rayCast(X,Y,X-15,Y,rd,16) then X:=X + 15;
         if not rayCast(X,Y,X,Y+18,rd,19) then Y:=Y - 18 else
            if not rayCast(X,Y,X,Y-18,rd,19) then Y:=Y + 18;
      end;
      if dist < 25 then //check for collision
      begin
         target_coll:=true;
         break;
      end else
         if not RayCast(X,Y,X,Y,rd,1) then
         begin
            poly_coll:=true;
            break;
         end;
      if dist > 10*flametraceMovement then //create one flame
         CreateBullet(X, Y, next_dist_x/10*flametraceMovement, next_dist_y/10*flametraceMovement, 0, 5, owner_ID);
      if interval > 9 then   
         interval:=interval-acceleration; //acceleration
      n:=n+1;
   end;
   if target_coll then //collision with target
   begin
      DoDamageBy(target_ID, owner_ID, GetPlayerStat(target_ID, 'health')-1);
      nova(X,Y,next_dist_x/2,next_dist_y/2,20,5,2,7,14,owner_ID);
      nova(X2,Y2,0,0,30,8,2,9,14,owner_ID);
      nova(X2,Y2,0,0,12,-3,10,5,4,owner_ID);
   end else
      if poly_coll then   //collision with poly
      begin
         nova(X,Y,next_dist_x/2,next_dist_y/2,20,5,2,7,14,owner_ID);
         nova(X,Y,0,0,20,-3,10,4,4,owner_ID);
      end else
         begin //no fuel
            nova(X,Y,next_dist_x/3,next_dist_y/2,20,5,2,7,14,owner_ID);
            CreateBullet(X, Y, next_dist_x/2, next_dist_x/3, 10, 4, owner_ID);
         end;
end;


« Last Edit: July 22, 2009, 07:26:35 am by tk »

Offline BombSki

  • Flagrunner
  • ****
  • Posts: 927
    • Climbing-soldiers.net
Re: Auto Aiming Missile 1.0
« Reply #1 on: November 10, 2008, 04:22:05 pm »
this is very cool, especially ingame.. its also really hard to dodge :)
its a pity that it uses the sleep function due to instability, but i hope it will be used in some scripts

Offline iDante

  • Veteran
  • *****
  • Posts: 1967
Re: Auto Aiming Missile 1.0
« Reply #2 on: November 10, 2008, 04:34:19 pm »
Hehe I made something very similar to this once.
What would be awesome would be mod-ing say, the law or something to shoot this kind of thing.

Offline Retro349

  • Major(1)
  • Posts: 10
Re: Auto Aiming Missile 1.0
« Reply #3 on: November 10, 2008, 05:28:46 pm »
This looks really cool!

Know any servers that use this, so I can try it out?

Offline Rampage_Terranius

  • Major
  • *
  • Posts: 69
  • The Strategist
    • Soldat Noob Servers
Re: Auto Aiming Missile 1.0
« Reply #4 on: November 11, 2008, 12:18:55 am »
i had an idea to make something like this as a "special" weapon in a script im making atm it worked a little like this but was really unstable

any way gj and nice script

Offline Mr

  • Inactive Soldat Developer
  • Soldier
  • ******
  • Posts: 166
Re: Auto Aiming Missile 1.0
« Reply #5 on: November 11, 2008, 01:40:06 am »
Awesome... looks really cool. Let's imagine... "CHEATER!111" xD

Offline Gizd

  • Flagrunner
  • ****
  • Posts: 586
  • (Re)tired
    • Eat-this! community site
Re: Auto Aiming Missile 1.0
« Reply #6 on: November 11, 2008, 04:15:42 am »
This is awesome [retard]
I'm going to use it in my script.

[edit]
But i need to make it shorter.
« Last Edit: November 11, 2008, 04:23:30 am by Gizd »

Offline xmRipper

  • Soldat Beta Team
  • Flagrunner
  • ******
  • Posts: 742
    • Personal
Re: Auto Aiming Missile 1.0
« Reply #7 on: November 11, 2008, 08:38:54 am »
omg really good job.
Co-Founder / CTO @ Macellan
Founder Turkish Soldat Community

Offline Norbo

  • Camper
  • ***
  • Posts: 338
Re: Auto Aiming Missile 1.0
« Reply #8 on: November 11, 2008, 10:49:25 am »
this rocks
finally you got around releasing it tk, after months of hard work and problems (i know because I was brain storming with tk a bit)

Offline dragus

  • Major(1)
  • Posts: 23
Re: Auto Aiming Missile 1.0
« Reply #9 on: November 15, 2008, 06:56:18 am »
what is commends in this scripts

Offline Toumaz

  • Veteran
  • *****
  • Posts: 1906
Re: Auto Aiming Missile 1.0
« Reply #10 on: November 15, 2008, 07:19:40 am »
what is commends in this scripts

Reading helps.

Full Description: In version for admin use the /mss command to launch the missile.

Offline DorkeyDear

  • Veteran
  • *****
  • Posts: 1507
  • I also go by Curt or menturi
Re: Auto Aiming Missile 1.0
« Reply #11 on: November 15, 2008, 11:52:31 am »
minor tip: "includes.txt" should be "Includes.txt" or it will not work on case-sensitive OSs.
and nice job; probably very difficult to perfect / improve such type things so, i do contratz you.. made me come up with a concept of how to make a path finder for Soldat :P

Offline shantec

  • Soldier
  • **
  • Posts: 140
  • Get ANGREH!!
Re: Auto Aiming Missile 1.0
« Reply #12 on: November 16, 2008, 05:21:06 am »
Damn i love this! Its really hard to dodge..
But only bad thing in this is the "poly dodgin"... with little bit of knowledge and time, it could be improved!
But overall very good!


Edit.
A turret that shoots these, once in 5 (?) seconds :D
« Last Edit: November 17, 2008, 12:35:20 pm by shantec »
Also Known As REIMA


Lol Happles (happy apples)

Offline rayanaga

  • Soldier
  • **
  • Posts: 143
  • ~Fur flying~
    • Kryonex
Re: Auto Aiming Missile 1.0
« Reply #13 on: November 22, 2008, 02:52:37 am »
Wow Dude.
This script is totally insane!!
Great job man!
Love it!
[kY] Kryonex - Your local zombie fanatics.
http://www.kryonex.com/

Offline LORD KILLA

  • Camper
  • ***
  • Posts: 254
  • Happie
Re: Auto Aiming Missile 1.0
« Reply #14 on: December 06, 2008, 03:39:56 am »
WOW!
Can u please make me a ready script of this ?
I tried to add Misslie.pas and the include line to scripts/default foldet but it dont work [if its possible, put it into core.pas]
If i made it wrong putting in default folder, please say me

Offline tk

  • Soldier
  • **
  • Posts: 235
Re: Auto Aiming Missile 1.0
« Reply #15 on: December 06, 2008, 04:10:48 am »
Don't put it into default. You have to put 'missile' folder attached in a zip into your 'scripts' folder.
« Last Edit: December 06, 2008, 04:13:32 am by tk »

Offline LORD KILLA

  • Camper
  • ***
  • Posts: 254
  • Happie
Re: Auto Aiming Missile 1.0
« Reply #16 on: December 06, 2008, 04:16:04 am »
where put Includes ?
And why as zip ?

Offline LORD KILLA

  • Camper
  • ***
  • Posts: 254
  • Happie
Re: Auto Aiming Missile 1.0
« Reply #17 on: December 06, 2008, 04:26:35 am »
 
  • ScriptCore v2.2 loaded! Found 1 scripts...
  • Compiling default -> Core.pas...
  • Compiling default -> NetworkCore.pas...
  • Compiling default -> AdminCore.pas...
  • Compilation Complete. [/tt]

    ->Thats what Console write

Offline LORD KILLA

  • Camper
  • ***
  • Posts: 254
  • Happie
Re: Auto Aiming Missile 1.0
« Reply #18 on: December 06, 2008, 04:31:14 am »
Hey i didnt see u are polish :)
anyway, can u integre it into a weapon, too [Barret- following bullet lol]

Offline tk

  • Soldier
  • **
  • Posts: 235
Re: Auto Aiming Missile 1.0
« Reply #19 on: December 06, 2008, 04:40:40 am »
http://forums.soldat.pl/index.php?topic=21468.0

Drag and drop "missile" folder from archive into your "scripts" folder located in soldatserver directory. You dont have to care about includes.txt. Just put WHOLE missile folder in your scripts folder.

I've made auto aiming law, maybe I'll post it when I fix some things.

Offline LORD KILLA

  • Camper
  • ***
  • Posts: 254
  • Happie
Re: Auto Aiming Missile 1.0
« Reply #20 on: December 06, 2008, 05:36:35 am »
thx works fine, /o\

Offline |_ancer

  • Soldier
  • **
  • Posts: 153
  • again and again.
Re: Auto Aiming Missile 1.0
« Reply #21 on: January 06, 2009, 12:18:26 am »
Pwning bots with other scripts owns. Imagine real servers and the amount of power you would have.

Offline Eagle

  • Major
  • *
  • Posts: 59
  • PERSONAL TEXT SUCKS, LIKE SIGNATURES!
Re: Auto Aiming Missile 1.0
« Reply #22 on: January 11, 2009, 07:18:21 pm »
Great script!  Really fun to harass zombies with...
SIGNATURES SUCK!

Offline Shard

  • Camper
  • ***
  • Posts: 449
  • yeet
Re: Auto Aiming Missile 1.0
« Reply #23 on: June 15, 2009, 05:08:52 am »
Sorry for dragging up old topics but whats the command to fire the missile. I've looked and cant find it so dont tell me to go and read the post. Link is broken too...

Offline -Vis-

  • Flagrunner
  • ****
  • Posts: 980
  • Zarch
Re: Auto Aiming Missile 1.0
« Reply #24 on: June 15, 2009, 05:18:01 am »
what is commends in this scripts

Reading helps.

Full Description: In version for admin use the /mss command to launch the missile.

You really SHOULD try reading the posts once in a while, Shard. ::)
« Last Edit: June 15, 2009, 03:17:07 pm by -Vis- »


Offline tk

  • Soldier
  • **
  • Posts: 235
Re: Auto Aiming Missile 1.0
« Reply #25 on: June 15, 2009, 06:21:05 am »
Updated first post
Rewrote the whole function, made it more readable, updated to work with 2.6.5 properly.

It's ready made function for scripters, and there's no version for admin anymore.
If it's really needed I'll write it later.
« Last Edit: June 15, 2009, 06:22:45 am by tk »

Offline Shard

  • Camper
  • ***
  • Posts: 449
  • yeet
Re: Auto Aiming Missile 1.6
« Reply #26 on: June 15, 2009, 07:18:14 am »
I must have just skipped over it lol. The download link wont work for me

Offline ~Niko~

  • Rainbow Warrior
  • *****
  • Posts: 2410
Re: Auto Aiming Missile 1.6
« Reply #27 on: June 15, 2009, 11:12:13 am »
I must have just skipped over it lol. The download link wont work for me
Maybe because THERE ISN'T...

Anyways here you go...

Offline demoniac93

  • Veteran
  • *****
  • Posts: 1554
Re: Auto Aiming Missile 1.0
« Reply #28 on: June 15, 2009, 03:15:23 pm »
Hehe I made something very similar to this once.
What would be awesome would be mod-ing say, the law or something to shoot this kind of thing.

GROM (Missile launcher) anyone?
Love it!
b&

Offline Centurion

  • Flagrunner
  • ****
  • Posts: 699
Re: Auto Aiming Missile 1.6
« Reply #29 on: June 15, 2009, 03:55:40 pm »
Get a server running with that script and I will be living on that server 24/7

Offline Shard

  • Camper
  • ***
  • Posts: 449
  • yeet
Re: Auto Aiming Missile 1.6
« Reply #30 on: June 16, 2009, 06:11:21 am »
sweetness, thanks Niko(once again lol)

Offline scarface09

  • Veteran
  • *****
  • Posts: 1153
  • Arsenal Supporter For Life
Re: Auto Aiming Missile 1.6
« Reply #31 on: June 17, 2009, 08:16:46 am »
Very awesome script mate! Nice work, works great!
Football is the other face of the world. If you don't like it, then you can get the hell out!

Offline freestyler

  • Soldat Beta Team
  • Camper
  • ******
  • Posts: 326
Re: Auto Aiming Missile 1.6
« Reply #32 on: June 17, 2009, 02:01:14 pm »
Hehe I made something very similar to this once.
What would be awesome would be mod-ing say, the law or something to shoot this kind of thing.

GROM (Missile launcher) anyone?
Love it!
It's scriptable. :) Would require you to change LAW to something that doesn't shoot at all (or shots very slow, non-damaging bullets), so it would be "blank" weapon. Then you should add something like this (pseudocode):
Code: [Select]
[inside apponidle]
  for i := 1 to 32 do if getplayerstat(i, 'active') then
    if (getplayerstat(i, 'primary') = 14) and (getkeypress(i, 'shoot')) // i'm not sure if LAW is #14
    and ((getkeypress(i, 'prone')) or (getkeypress(i, 'crouch'))) // players need to crouch to shoot, delete this line to allow shooting while standing
    then [shoot the missile]
It would need some reload restrictions, like setting the timer to 10 seconds after shooting or checking for LAW's reload.

Offline tk

  • Soldier
  • **
  • Posts: 235
Re: Auto Aiming Missile 1.6
« Reply #33 on: June 17, 2009, 03:06:49 pm »
I did it some time ago with modded law. Set flame as bullet style, low damage (like 5?), and speed 0.

inside OnPlayerDamage()
Code: [Select]
if victim = shooter then
  if GetPlayerStat(shooter,'Primary') = 16 then{ i think law is 16}
    if GetPlayerStat(shooter,'Ammo') = 0 then { player has shot }
      if (getkeypress(shooter, 'prone')) or (getkeypress(shooter, 'crouch') then begin
        target:=NearestTarget(...);
        if target = 0 then exit;
        Missile(shooter, target, GetPlayerStat(shooter,'x'), GetPlayerStat(shooter,'y'));
      // or the second possibility
        ThreadFunc([shooter, target, GetPlayerStat(shooter,'x'), GetPlayerStat(shooter,'y')],'Missile');
      end;

Missile can't be called from AppOnIdle() if it's not threaded. All things like GetTargetXY are refreshed in AppOnIdle() only once per second, coords of target don't change while flight of the missile, so it's not able to make curves.
« Last Edit: June 17, 2009, 03:10:42 pm by tk »

Offline zop

  • Major
  • *
  • Posts: 81
Re: Auto Aiming Missile 1.6
« Reply #34 on: June 20, 2009, 10:27:51 am »
Very thanks.
This script works very beautiful.

http://122.116.167.31:23238:23238/galavela/?inc=player&name=%5BTomato+Bird%5D+Cibo[/size=1]

Offline Silnikos

  • Soldier
  • **
  • Posts: 129
Re: Auto Aiming Missile 1.6
« Reply #35 on: July 19, 2009, 05:51:42 am »
Anyone got working launch command?
I tried with:
Code: [Select]
function OnCommand(ID: Byte; Text: string): boolean;
begin
if GetPiece(Text,' ',0) = '/aim' then begin
Missile(
ID,
GetPlayerStat(strtoint(GetPiece(Text,' ',1)), 'ID'),
GetPlayerStat(strtoint(GetPiece(Text,' ',1)), 'X'),
GetPlayerStat(strtoint(GetPiece(Text,' ',1)), 'Y'),
);
end;
Result := false;
end;
But I keep on getting syntax errors...

Offline danmer

  • Camper
  • ***
  • Posts: 466
  • crabhead
Re: Auto Aiming Missile 1.6
« Reply #36 on: July 19, 2009, 11:21:20 am »
GetPlayerStat(strtoint(GetPiece(Text,' ',1)), 'ID'),

...


you don't get the player's ID from the player... Just do strtoint(GetPiece(Text,' ',1))

Offline Xariki

  • Major(1)
  • Posts: 5
Re: Auto Aiming Missile 1.6
« Reply #37 on: October 18, 2009, 10:39:12 am »
Hello,

im new to scripting, and Im starting new again (last time was 1 1/2 years ago)
so I kinda forgot everything >.>

I have used this script before (the 1.0 version) and it worked fine, you typed /mss and it shot a flaming missile at your nearest target. In 1.6 I type /mss and absolutely nothing happens. Help please?

(sorry for refreshing an old topic but I really need help on this one)

Offline Centurion

  • Flagrunner
  • ****
  • Posts: 699
Re: Auto Aiming Missile 1.6
« Reply #38 on: October 18, 2009, 12:05:13 pm »
How can I test this script? I mean I don't have a server.

Offline tk

  • Soldier
  • **
  • Posts: 235
Re: Auto Aiming Missile 1.6
« Reply #39 on: October 18, 2009, 02:46:57 pm »
Server is only the way to test it.

Here is a simple launcher for those who would like to shoot missiles by using a command.
It finds the nearest target automatically. (command /aim)
Code: [Select]
function lookForTarget(ID: byte; MinDistance, MaxDistance: integer; UsingRaycast: boolean): byte;
var
   i,Team: byte; X,Y,X2,Y2,sqrdist,maxdist: single;
begin
   GetPlayerXY(ID,X,Y);
   maxdist:=MaxDistance*MaxDistance;
   Result:=0;
   Team := GetPlayerStat(ID, 'Team');
   for i:=1 to 32 do
      if i <> ID then
         if GetPlayerStat(i, 'Active') then
            if GetPlayerStat(i, 'Alive') then
               if GetPlayerStat(i, 'team') <> Team then
               begin
                  GetPlayerXY(i,X2,Y2);
                  if UsingRayCast then
                     if not RayCast(X,Y-7,X2,Y2-7,sqrdist,MaxDistance+1) then continue;
                  X2:=X2-X; Y2:=Y2-Y; sqrdist:=X2*X2+Y2*Y2;
                  if (sqrdist < maxdist) and (sqrdist >= MinDistance) then
                  begin
                     Result:=i;
                     maxdist:=sqrdist;
                  end;
               end;
end;


function OnCommand(ID: Byte; Text: string): boolean;
var x, y: single; target: byte;
begin
  if Text = '/aim' then begin
    target := lookForTarget(ID, 0, 700, true);
    if target > 0 then begin
      GetPlayerXY(ID, x, y);
      Missile(ID, target, x, y);
    end;
  end;
  Result := false;
end;

Offline xmRipper

  • Soldat Beta Team
  • Flagrunner
  • ******
  • Posts: 742
    • Personal
Re: Auto Aiming Missile 1.6
« Reply #40 on: October 18, 2009, 04:54:06 pm »
How can I test this script? I mean I don't have a server.
You don't need rent a server. Just download the latest dedicated server from soldat.pl , then you can test.
Co-Founder / CTO @ Macellan
Founder Turkish Soldat Community

Offline the halo fan

  • Camper
  • ***
  • Posts: 285
  • Mustly the heat of battle is just the begining
Re: Auto Aiming Missile 1.6
« Reply #41 on: October 20, 2009, 02:36:05 pm »
LOL, duds i'm new to scripts to and I still cann't use this. I put the missile folder in the script folder and went in the sever press /(as a command) then typed /aim shot my law and the missile from the law did NOTHING. Please help. :-\ BTW I'm testing it.

Offline heywood

  • Major(1)
  • Posts: 3
Re: Auto Aiming Missile 1.6
« Reply #42 on: October 20, 2009, 02:44:30 pm »
the script doesnt work for me too somehow
i have tried the command /aim but nothing happend
In violation with the signature rules. Read'em through.

Offline zop

  • Major
  • *
  • Posts: 81
Re: Auto Aiming Missile 1.6
« Reply #43 on: October 20, 2009, 07:27:48 pm »
the script doesnt work for me too somehow
i have tried the command /aim but nothing happend
Did you put an enemy bot for missile?

http://122.116.167.31:23238:23238/galavela/?inc=player&name=%5BTomato+Bird%5D+Cibo[/size=1]

Offline the halo fan

  • Camper
  • ***
  • Posts: 285
  • Mustly the heat of battle is just the begining
Re: Auto Aiming Missile 1.6
« Reply #44 on: October 21, 2009, 04:50:56 am »
I'm going to answer that to. I put a bot in. Next.lol no rush.

Offline homerofgods

  • Soldat Beta Team
  • Rainbow Warrior
  • ******
  • Posts: 2029
  • We can do better!
Re: Auto Aiming Missile 1.6
« Reply #45 on: October 21, 2009, 08:25:34 am »
LOL, duds i'm new to scripts to and I still cann't use this. I put the missile folder in the script folder and went in the sever press /(as a command) then typed /aim shot my law and the missile from the law did NOTHING. Please help. :-\ BTW I'm testing it.
have you enabled scripting?

Offline the halo fan

  • Camper
  • ***
  • Posts: 285
  • Mustly the heat of battle is just the begining
Re: Auto Aiming Missile 1.6
« Reply #46 on: October 21, 2009, 01:46:22 pm »
Uhhhhh...............lol i have no idea what you said or how to do it.

Offline Gizd

  • Flagrunner
  • ****
  • Posts: 586
  • (Re)tired
    • Eat-this! community site
Re: Auto Aiming Missile 1.6
« Reply #47 on: October 22, 2009, 08:36:02 am »
server.ini

Offline the halo fan

  • Camper
  • ***
  • Posts: 285
  • Mustly the heat of battle is just the begining
Re: Auto Aiming Missile 1.6
« Reply #48 on: October 23, 2009, 04:37:01 am »
.......................... ???
I think i know were the sever.ini is but how to enable scripting?

Offline Toumaz

  • Veteran
  • *****
  • Posts: 1906
Re: Auto Aiming Missile 1.6
« Reply #49 on: October 23, 2009, 04:58:50 am »
set Scripting=1

Offline y0uRfath0r~

  • Major(1)
  • Posts: 21
Re: Auto Aiming Missile 1.6
« Reply #50 on: March 20, 2011, 08:09:14 am »
:3

Offline jrgp

  • Administrator
  • Flamebow Warrior
  • *****
  • Posts: 5037
Re: Auto Aiming Missile 1.6
« Reply #51 on: March 20, 2011, 10:39:03 am »
There are other worlds than these