TestMax.dk Paster
  • Forside
  • Print
  • Bookmark
  • Kontakt
  • SiteMap


infobox infobox
 

poker

01-04-2008 00:00:23
 
 
Muligheder (Anmeld)
Skrevet af solkongen
Kliks 508
Kategori Bot scripting
jeg har fundet et poker scrips

men har set lidt på det er ser slet ikke nogen comandoer til og starte det

og vis ikke kan det så laves

alias sortwithintok {
var %n = $remove($1,s,c,d,h)
var %s1 = $sorttok(%n,45,nr)
var %x = 1,%y = $numtok(%s1,45)
var %nl = $1
while ( %x <= %y ) {
if ( $istok(%nl,$gettok(%s1,%x,45) $+ s,45) && !$istok(%s1,$gettok(%s1,%x,45) $+ s,45) ) {
%s1 = $reptok(%s1,$gettok(%s1,%x,45),$gettok(%s1,%x,45) $+ s,1,45)
}
elseif ( $istok(%nl,$gettok(%s1,%x,45) $+ c,45) && !$istok(%s1,$gettok(%s1,%x,45) $+ c,45) ) {
%s1 = $reptok(%s1,$gettok(%s1,%x,45),$gettok(%s1,%x,45) $+ c,1,45)
}
elseif ( $istok(%nl,$gettok(%s1,%x,45) $+ h,45) && !$istok(%s1,$gettok(%s1,%x,45) $+ h,45) ) {
%s1 = $reptok(%s1,$gettok(%s1,%x,45),$gettok(%s1,%x,45) $+ h,1,45)
}
elseif ( $istok(%nl,$gettok(%s1,%x,45) $+ d,45) && !$istok(%s1,$gettok(%s1,%x,45) $+ d,45) ) {
%s1 = $reptok(%s1,$gettok(%s1,%x,45),$gettok(%s1,%x,45) $+ d,1,45)
}
inc %x 1
}
return %s1
}
alias handeval {
;SYNTAX: $handeval(board,hand1,..,handN)
;Returns a value of 1-N for the best poker hand
;If there is a split, it will separate the hands that split with spaces, ex 1 3 4 for a 3-way split between hands 1, 3, and 4.

;LEFTOFF- Problem with unnecessary report of a kicker with two pair.
;Unextensively tested
;Demo command- //echo f $handeval(AhTsJd7c9d,Ac7s,AdQh).debug

var %board = $1
tokenize 32 $replace($2-,t,10,j,11,q,12,k,13,a,14)

var %x = $0
set -l %tt
while ( %x ) {
set -l %hp [ $+ [ %x ] ] $replace(%board $+ $ [ $+ [ %x ] ],t,10,j,11,q,12,k,13,a,14)
.echo -q $regsub(%hp [ $+ [ %x ] ],/([a-z])/ig,\1 $+ -,%tt)
set -l %hp [ $+ [ %x ] ] $sortwithintok(%tt)
set -l %hv [ $+ [ %x ] ] $replace(%hp [ $+ [ %x ] ],s,-,c,-,d,-,h,-)
%hv [ $+ [ %x ] ] = $sorttok(%hv [ $+ [ %x ] ],45,nr)
set -l %hs [ $+ [ %x ] ] $replace(%hp [ $+ [ %x ] ],1,-,2,-,3,-,4,-,5,-,6,-,7,-,8,-,9,-,0,-)
%hs [ $+ [ %x ] ] = $sorttok(%hs [ $+ [ %x ] ],45)
dec %x
}
if ( $prop == debug ) {
echo hp1 %hp1
echo hp2 %hp2
echo hs1 %hs1
echo hs2 %hs2
echo hv1 %hv1
echo hv2 %hv2
echo --
}
var %x = 1,%b = 0,%v = 0,%s = 0
set -l %tv
set -l %slist
set -l %fhv
set -l %tfhv
set -l %fl1
set -l %fl2
set -l %fl3
set -l %fl4
;B values
;8 = Straight Flush
;7 = Quads
;6 = Boat
;5 = Flush
;4 = Straight
;3 = Trips
;2 = Two Pair
;1 = Pair
;0 = Highcard
while ( %x <= $0 ) {
if ( $issf(%hp [ $+ [ %x ] ]) ) {
%tv = $v1
if ( %b == 8 ) {
if ( %tv > %v ) {
%v = %tv
%s = 1
set -l %fhv
set -l %slist %x
inc %x
continue
}
elseif ( %tv == %v ) {
inc %s
%slist = $addtok(%slist,%x,32)
set -l %fhv
inc %x
continue
}
else {
%s = 1
set -l %slist %x
set -l %fhv
inc %x
continue
}
}
else {
%b = 8
%v = %tv
%s = 1
set -l %slist %x
}
inc %x
continue
}
if ( %b > 7 ) {
inc %x
continue
}
var %d = $dupfinder(%hv [ $+ [ %x ] ])
if ( $wildtok(%d,*:4,1,32) ) {
%tv = $gettok($wildtok(%d,*:4,1,32),1,58)
if ( %b == 7 ) {
if ( %tv > %v ) {
%v = %tv
%s = 1
set -l %fhv
set -l %slist %x
inc %x
continue
}
elseif ( %tv == %v ) {
inc %s
%slist = $addtok(%slist,%x,32)
}
}
else {
%b = 7
%s = 1
%v = %tv
set -l %slist %x
set -l %fhv
}
inc %x
continue
}
if ( %b > 6 ) {
inc %x
continue
}
if ( $numtok(%d,32) > 1 ) {
if ( $wildtok(%d,*:2,0,32) && $wildtok(%d,*:3,0,32) ) || ( $wildtok(%d,*:3,0,32) > 1 ) {
if ( $wildtok(%d,*:2,1,32) ) {
%tv = $gettok($wildtok(%d,*:3,1,32),1,58)
%tfhv = $gettok($wildtok(%d,*:2,1,32),1,58)
}
else {
if ( $gettok($wildtok(%d,*:3,1,32),1,58) > $gettok($wildtok(%d,*:3,2,32),1,58) ) {
%tv = $gettok($wildtok(%d,*:3,1,32),1,58)
%tfhv = $gettok($wildtok(%d,*:3,2,32),1,58)
}
else {
%tv = $gettok($wildtok(%d,*:3,2,32),1,58)
%tfhv = $gettok($wildtok(%d,*:3,1,32),1,58)
}
}
if ( %b == 6 ) {
if ( %tv > %v ) {
%v = %tv
%fhv = %tfhv
}
elseif ( %tv == %v ) {
if ( %fhv < $gettok($wildtok(%d,*:2,1,32),1,58) ) {
%v = %tv
%s = 1
set -l %slist %x
inc %x
continue
%fhv = %tfhv
}
elseif ( %fhv == $gettok($wildtok(%d,*:2,1,32),1,58) ) {
inc %s
%slist = $addtok(%slist,%x,32)
}
}
else {
inc %x
continue
}
}
else {
%b = 6
%v = %tv
%s = 1
set -l %slist %x
%fhv = %tfhv
inc %x
continue
}
}
}
if ( %b > 5 ) {
inc %x
continue
}
if ( $isflush(%hs [ $+ [ %x ] ]) ) {
set -l %asdf $v1
%tv = $hcs(%hp [ $+ [ %x ] ],%asdf)
var %z = 1
while ( %z <= 4 ) {
set -l %tfl [ $+ [ %z ] ] $hcs($deltok(%hp [ $+ [ %x ] ],1- %z,45),%asdf)
if ( %tfl [ $+ [ %z ] ] > %fl [ $+ [ %z ] ] ) {
var %iw = 1
}
elseif ( %tfl [ $+ [ %z ] ] < %fl [ $+ [ %z ] ] ) {
var %icl = 1
}
inc %z
}
if ( %b == 5 ) {
if ( %tv == %v ) {
if ( %iw ) {
%v = %tv
%fl1 = %tfl1
%fl2 = %tfl2
%fl3 = %tfl3
%fl4 = %tfl4
%s = 1
set -l %slist %x
inc %x
continue
}
elseif ( %icl ) {
inc %x
continue
}
else {
inc %s
set -l %slist $addtok(%slist,%x,32)
inc %x
continue
}
}
elseif ( %tv > %v ) {
%v = %tv
%fl1 = %tfl1
%fl2 = %tfl2
%fl3 = %tfl3
%fl4 = %tfl4
%s = 1
set -l %slist %x
inc %x
continue
}
else {
inc %x
continue
}
}
else {
%b = 5
%v = %tv
%fl1 = %tfl1
%fl2 = %tfl2
%fl3 = %tfl3
%fl4 = %tfl4
%s = 1
set -l %slist %x
inc %x
continue
}
}
if ( %b > 4 ) {
inc %x
continue
}
if ( $isstraight(%hv [ $+ [ %x ] ]) ) {
%tv = $v1
if ( %b == 4 ) {
if ( %tv > %v ) {
%v = %tv
%s = 1
set -l %slist %x
inc %x
continue
}
elseif ( %tv == %v ) {
inc %s
%slist = $addtok(%slist,%x,32)
inc %x
continue
}
else {
inc %x
continue
}
}
else {
%b = 4
%v = %tv
%s = 1
set -l %slist %x
inc %x
continue
}
}
if ( %b > 3 ) {
inc %x
continue
}
if ( $wildtok(%d,*:3,1,32) ) {
%tv = $gettok($v1,1,58)
if ( %b == 3 ) {
if ( %tv > %v ) {
%v = %tv
%s = 1
set -l %slist %x
inc %x
continue
}
elseif ( %tv == %v ) {
inc %s
%slist = $addtok(%slist,%x,32)
inc %x
continue
}
else {
inc %x
continue
}
}
else {
%b = 3
%s = 1
%v = %tv
set -l %slist %x
inc %x
continue
}
}
if ( %b > 2 ) {
inc %x
continue
}
if ( $numtok(%d,32) > 1 ) {
if ( $wildtok(%d,*:2,0,32) == 2 ) {
%tv = $gettok($iif($wildtok(%d,*:2,1,32) < $wildtok(%d,*:2,2,32),$wildtok(%d,*:2,1,32),$wildtok(%d,*:2,2,32)),1,58)
%tfhv = $gettok($iif($wildtok(%d,*:2,1,32) > $wildtok(%d,*:2,2,32),$wildtok(%d,*:2,1,32),$wildtok(%d,*:2,2,32)),1,58)
if ( %b == 2 ) {
if ( %tv > %v ) {
%v = %tv
%fhv = %tfhv
%s = 1
set -l %slist %x
inc %x
continue
}
elseif ( %tv == %v ) {
if ( %tfhv > %fhv ) {
%v = %tv
%fhv = %tfhv
%s = 1
set -l %slist %x
inc %x
continue
}
elseif ( %tfhv == %fhv ) {
inc %s
%slist = $addtok(%slist,%x,32)
}
}
else {
inc %x
continue
}
}
else {
%b = 2
%v = %tv
%fhv = %tfhv
%s = 1
set -l %slist %x
inc %x
continue
}
}
}
if ( %b > 1 ) {
inc %x
continue
}
if ( $gettok(%d,1,58) >= %v && $gettok(%d,1,58) != 0 ) {
if ( %b == 1 ) {
if ( $gettok(%d,1,58) > %v ) {
%v = $gettok(%d,1,58)
%s = 1
set -l %slist %x
}
else {
inc %s
%slist = $addtok(%slist,%x,32)
}
inc %x
continue
}
%b = 1
%s = 1
set -l %slist %x
%v = $gettok(%d,1,58)
inc %x
continue
}
if ( %b > 0 ) {
inc %x
continue
}
%tv = $gettok(%hv [ $+ [ %x ] ],1,45)
var %z = 2
while ( %z <= 7 ) {
set -l %tfl [ $+ [ %z ] ] $gettok(%hv [ $+ [ %x ] ],%z,45)
if ( %tfl [ $+ [ %z ] ] > %fl [ $+ [ $calc(%z -1) ] ] ) && ( !%iw ) {
var %iw = %tfl [ $+ [ %z ] ]
}
elseif ( %tfl [ $+ [ %z ] ] < %fl [ $+ [ $calc(%z -1) ] ] ) && ( !%icl ) {
var %icl = %fl [ $+ [ $calc(%z -1) ] ]
}
inc %z
}
if ( %tv > %v ) {
%v = %tv
%fl1 = %tfl2
%fl2 = %tfl3
%fl3 = %tfl4
%fl4 = %tfl5
%s = 1
set -l %slist %x
inc %x 1
continue
}
elseif ( %tv == %v ) {
if ( %iw ) {
var %kicker = %iw
%v = %tv
%fl1 = %tfl1
%fl2 = %tfl2
%fl3 = %tfl3
%fl4 = %tfl4
%s = 1
set -l %slist %x
inc %x
continue
}
elseif ( %icl ) {
var %kicker = %icl
inc %x
continue
}
else {
inc %s
set -l %slist $addtok(%slist,%x,32)
inc %x
continue
}
inc %s
%slist = $addtok(%slist,%x,32)
inc %x 1
continue
}
inc %x 1
}
if ( %s > 1 ) {
var %x = %s,%upd = 0,%chgd = 0
var %fl1 = %v
set -l %fl2
set -l %fl3
set -l %fl4
set -l %fl5
while ( %x ) {
var %z = 1
while ( %z <= 5 ) {
set -l %tfl [ $+ [ %z ] ] $gettok(%hv [ $+ [ %x ] ],%z,45)
;Good debugging echo for problems with kicker determination and split pot evaluation
;echo x %x it %z fl %fl [ $+ [ %z ] ] tfl %tfl [ $+ [ %z ] ]
if ( %fl [ $+ [ %z ] ] < %tfl [ $+ [ %z ] ] ) || ( !%fl [ $+ [ %z ] ] ) {
if ( !%fl [ $+ [ %z ] ] ) {
%fl [ $+ [ %z ] ] = %tfl [ $+ [ %z ] ]
}
else {
var %slist = %x
var %chgd = 1
var %upd = %tfl [ $+ [ %z ] ]
%s = 1
}
}
elseif ( %fl [ $+ [ %z ] ] > %tfl [ $+ [ %z ] ] ) && ( !%chgd ) {
dec %s
var %slist = $deltok(%slist,%x,32)
var %kicker = %fl [ $+ [ %z ] ]
break
}
elseif ( %chgd ) {
inc %s
var %slist = $addtok(%slist,%x,32)
}
if ( %upd ) {
var %kicker = %upd
%fl1 = %tfl1
%fl2 = %tfl2
%fl3 = %tfl3
%fl4 = %tfl4
%fl5 = %tfl5
}
var %upd = 0
set -l %chgd
inc %z
}
dec %x
}
}
$iif($isid,return,echo -a) $iif(%s > 1,%s $+ -way split between hands numbers,Winner is hand number) $replace(%slist,$chr(32),$chr(44)) with $replace(%b,0,Highcard,1,Pair,2,TwoPair,3,Trips,4,Straight,5,Flush,6,FullHouse,7,Quads,8,StraightFlu sh) $replace(%v,10,Ten,11,Jack,12,Queen,13,King,14,Ace) $iif(%fhv,over $replace(%fhv,10,Tens,11,Jacks,12,Queens,13,Kings,14,Aces)) $iif(%kicker,- $replace(%kicker,10,Ten,11,Jack,12,Queen,13,King,14,Ace) kicker)
return
}
;Format- Winners WinnerList Hand Highcard NextHighCard Kicker
;Winners is the number of winners (more than 1 indicates a split pot)
;WinnerList is a comma separated list of the winners (there will only be one value unless there's a split)
;Hand will be in the format of %b - See above notes
;NextHighCard is only used for Full Houses and Two Pairs. It will be 0 if the winning hand was not a Full House or Two Pair.
;Kicker may or may not have a value
return %s %slist %b %v $iif(%fhv,%fhv,0) %kicker
}
alias dupfinder {
;SYNTAX: $dupfinder(text)
;text should be in %hvX format
;Returns sets of duplicates or 0 if there are no duplicates (used for finding pair, two pair, 3 of a kind, full house, 4 of a kind)
;Return format is value:duplicates where value is the "card" and duplicates is the number of duplicates found
;One or two sets of duplicates may be returned. If it's two, they are space separated
;Ex if it returns 9:3 5:2 this indicates a full house with 3 nines and 2 fives

var %x = 1,%h = 99
var %asdf = $calc($len($remove($1,1,2,3,4,5,6,7,8,9,0)) +1)
set -l %l
set -l %m
while ( %x <= %asdf ) {
if ( !$wildtok(%l,$gettok($1,%x,45) $+ :*,0,32) ) {
%l = $addtok(%l,$gettok($1,%x,45),32) $+ :1
}
else {
var %a = $wildtok(%l,$gettok($1,%x,45) $+ :*,1,32)
var %l = $reptok(%l,%a,$gettok(%a,1,58) $+ : $+ $calc($gettok(%a,2,58) +1),1,32)
var %m = $iif($istok(%m,%a,32),$reptok(%m,%a,$gettok(%a,1,58) $+ : $+ $calc($gettok(%a,2,58) +1),1,32),$addtok(%m,$gettok(%a,1,58) $+ : $+ $calc($gettok(%a,2,58) +1),32))
if ( $gettok(%a,1,58) < %h ) %h = $gettok(%a,1,58)
}
inc %x
}
if ( $numtok(%m,32) > 2 ) {
%m = $remtok(%m,$wildtok(%m,%h $+ :*,1,32),32)
}
return $iif(%m,%m,0)
}
alias isstraight {
;SYNTAX: $isstraight(text)
;Text should be in %hvX format
;NOTE- Text *MUST* be sorted descendingly!
;Returns highest card of the straight or 0 if there is no straight

var %x = 1
set -l %v
set -l %c
while ( %x <= $numtok($1,45) ) {
if ( $gettok($1,%x,45) == 14 ) set -l %ha 1
if ( $gettok($1,%x,45) == %v ) {
inc %x
continue
}
if ( $gettok($1,%x,45) == $calc(%v -1) ) {
if ( %ha ) && ( %c == 3 ) && ( $gettok($1,%x,45) == 2 ) {
%v = 2
%c = 5
break
}
inc %c
if ( %c == 5 ) break
dec %v
}
else {
%c = 1
%v = $gettok($1,%x,45)
}
inc %x
}
return $iif(%c == 5,$calc(%v +3),0)
}
alias isflush {
;Returns suit character (s,h,d,c) of a flush if there is one
;If there is no flush returns 0
;Should be formatted in %hsX

var %x = 1,%asdf = $calc($len($remove($1,s,c,d,h)) +1)
var %c = 0
var %h = 0
var %s = 0
var %d = 0
while ( %x <= %asdf ) {
inc % [ $+ [ $gettok($1,%x,45) ] ]
inc %x
}
if ( %c >= 5 ) return c
elseif ( %h >= 5 ) return h
elseif ( %s >= 5 ) return s
elseif ( %d >= 5 ) return d
else return 0
}
alias issf {
;Returns high card of a straight flush if there is one
;Returns 0 if there is no straight flush
;Should be formatted as %hpX

var %a = $isstraight($remove($1,s,c,d,h))
var %b = $isflush($remove($1,0,1,2,3,4,5,6,7,8,9))
if ( !%a ) || ( !%b ) {
return 0
}
var %x = 1,%s = 0
while ( %x > 5 ) {
if ( !$findtok($1,$calc(%a - %s) $+ %b,0,45) ) {
return 0
break
}
inc %s
dec %x
}
inc %s
return %a
}
alias hcs {
;Syntax: $hcs(text,suit)
;Returns the highest card of a particular suit in a hand
;Used to find a flush's high card.
;Text should be formatted as hpX

var %x = 1,%h = 0
while ( %x <= $numtok($1,45) ) {
if ( $2 !isin $gettok($1,%x,45) ) {
inc %x
continue
}
elseif ( $remove($gettok($1,%x,45),s,h,d,c) > %h ) {
%h = $remove($gettok($1,%x,45),s,h,d,c)
}
inc %x
}
return %h
}
 
infobox infobox

infobox infobox
  Filer som er vedhæftet denne tråd  
 
Fil navn: Fil størrelse
poker.txt 16 KB
 
infobox infobox


infobox infobox
 
#1Panda(Anmeld) 01-04-2008 18:05:11
 
 
Undskyld men tror du helt seriøst selv vi gider se et 16 kb script igennem fordi du ikke kan finde ud af commands til det!?

Der må da være en readme <.<
Portfolio: http://dumpen.dk

Panda's signatur billede
 
infobox infobox

infobox infobox
 
#2solkongen(Anmeld) 01-04-2008 19:18:14
 
 
det var der ikke vær da lige lidt mere sur

 
infobox infobox

infobox infobox
 
#3phanion(Anmeld) 01-04-2008 19:21:35
 
 
#2
Han er ikke sur, han siger bare at vi ikke gider kigge et så stort script igennnem.
i qm yh4 b54e5 you nioirew
 
infobox infobox

infobox infobox
 
#4Panda(Anmeld) 01-04-2008 19:51:25
 
 
#2 > se på denne her tråd om et par år eller to (eller 10) og svar mig igen der

Så forstår du hvad #3 mener :)

og nej er ikke sur
Portfolio: http://dumpen.dk

Panda's signatur billede
 
infobox infobox

Påmindelse ved nyt svar

Ved at tilmelde dig automatisk påmindelse, modtager du en email så snart denne tråd bliver besvaret, dog sender vi kun en mail til dig, også selvom der er kommet flere svar, simpelthen for at spare dig for spam i din indbakke.


infobox infobox
  Svar på tråden  
   
 
 
infobox infobox

infobox infobox
  Læs dette før du sender dit indlæg!  
 
Ved tryk på send knappen accepterer du vores regelsæt som kan læses her
Praktiske informationer
Type Eksempel Resultat
Fed [b]din tekst[/b] din tekst
Kursiv [k]din tekst[/k] din tekst
Understreg [u]din tekst[/u] din tekst
Kode felt [code]din tekst[/code]
din tekst
infobox infobox