Szerző Téma: eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)  (Megtekintve 1757 alkalommal)

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Dátum: 2012. március 24. - 17:50:50 »
+1 Show voters
Mikor a PDRP fejlesztésével elérkeztem a pókergépek berakásával (kb. 2011 november), akkor elkezdtem azt egy ilyen úton fejleszteni. Órákat pókereztünk, míg sikerült kialakítanom a játékmenetet, a lapellenõrzõt. A kinézet és az irányítás kialakítása már könnyebb volt. (kinézetben köszönet jár kadaradam-nak is)
WolverinZ-nek ezer köszönet a türelméért, neki is köszönhetitek, hogy eljutottam a szkripttel, hogy publikálhatom. A szkriptet nem terveztem publikálni, mert egyedi volt. Most, hogy ha PDRP-be berakom, akkor sokára kerül játék alá, ha pedig tartogatom, valaki eljut oda, hogy lesz egy hasonszõrû póker szkriptje, és akkor bizonygassam, hogy ezt én mûveltem..
??zss?losz szkriptje ettõl teljesen független.
Az, hogy a játékban ez hogy is néz ki, erre a mondatra kattintva megnézhetitek. (4 kép)
A szkript követi a Texas Hold\'Em ismereteimet:
Egy játékos nem tud játszani, várnia kell több játékosra.
Ha megérkezett a játékos a szkript kiválaszt egy dealert (körönként továbbadódó titulus), egy nagy- és kisvakot. (2 játékos esetén valaki egyszerre lesz kis- vagy nagyvak és dealer)
A rendszer lapokat oszt a pakliból. A soron következõ játékos (rá)emelhet((re)raise-H), kopoghat(check-Y), és dobhat(fold-N). A licitkör akkor ér véget, mikor mindenki kopogott vagy dobott (senki sem emelt). A játék no-limit texas hold\'em: bármeddig ellehet menni a tétekkel. (ha van tõke.. ha nincs -> ALLIN)
Az elsõ licitkör után jön a flop, aztán egy újabb ugyanolyan licitkör után a turn aztán egy újabb licitkört kísérve a river.
A legjobb kéz nyer. A szkript érzékeli az összes pókerlap-kombinációt, amit a Texas Hold\'em szabályzatában találhattok. Azonos kombináció esetén a lapmagasságtól is függ a végsõ eredmény.
A nyertes viszi a Pot-ot és új kör kezdõdik.
A szkript elsõ sorában beállíthatjátok, hogy hány férõhelyes legyen az asztal és hogy mennyi legyen az állandó vak.
Lejjebb, a forrásban találtok két kikommentezett parancsot (/reset, /bank). Ha akarjátok használjátok õket.
A forrásban tettem egy kis útmutatót is a lapok kezeléséhez használt metódusról, aki a szkriptet fejleszteni vagy átalakítani szeretné, annak a személynek az mindenképp kell.
Az asztalhoz bárki a /joinpoker paranccsal csatlakozhat. Elhagyni a /leavepoker paranccsal lehet (ha valaki csõdbe megy, szintén elhagyja a játékot)
Letöltés:
eholdem.pwn (fixchars2.inc)| eholdem.amx
« Utoljára szerkesztve: 2012. március 26. - 19:49:24 írta Epsilon »

Gang[St]e[R]

  • Vendég
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #1 Dátum: 2012. március 24. - 17:53:37 »
0 Show voters
Idézetet írta: Epsilon date=1332607850\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"19004\" data-ipsquote-contentclass=\"forums_Topic
Mikor a PDRP fejlesztésével elérkeztem a pókergépek berakásával (kb. 2011 november), akkor elkezdtem azt egy ilyen úton fejleszteni. Órákat pókereztünk, míg sikerült kialakítanom a játékmenetet, a lapellenõrzõt. A kinézet és az irányítás kialakítása már könnyebb volt. (kinézetben köszönet jár kadaradam-nak is)
WolverinZ-nek ezer köszönet a türelméért, neki is köszönhetitek, hogy eljutottam a szkripttel, hogy publikálhatom. A szkriptet nem terveztem publikálni, mert egyedi volt. Most, hogy ha PDRP-be berakom, akkor sokára kerül játék alá, ha pedig tartogatom, valaki eljut oda, hogy lesz egy hasonszõrû póker szkriptje, és akkor bizonygassam, hogy ezt én mûveltem..
ɐʞzssǝlosz szkriptje ettõl teljesen független.
 
És ha levideóztad volna és kiteszed mint a biliárdot? Nem kellett volna félni a publikálástól, ráadásul még látták volna is, de mongyuk így használható is. (y)

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #2 Dátum: 2012. március 24. - 17:56:42 »
0 Show voters
Ja igen. Egy másik oka is volt a kiadásnak. Annyiféle módon jöhetnek a lapok.. Annyi változó van, hogy azt nem lehet ilyen kis létszámmal tesztelni. Hát itt van. Ennél nagyobb létszám elõtt nehezen lehetne tesztelni  ;D

Nem elérhető RolePlay

  • 2100
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #3 Dátum: 2012. március 24. - 17:58:24 »
0 Show voters
Jó lett :D Majd,a TE rp módodban szívesen látnám :D

Gang[St]e[R]

  • Vendég
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #4 Dátum: 2012. március 24. - 17:59:35 »
0 Show voters
Idézetet írta: RolePlay date=1332608304\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"19004\" data-ipsquote-contentclass=\"forums_Topic
Jó lett :D Majd,a TE rp módodban szívesen látnám :D
 
Sajnos ez nem csak PDRP-ben lesz.

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #5 Dátum: 2012. március 24. - 18:01:47 »
0 Show voters
Szép

Nem elérhető RolePlay

  • 2100
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #6 Dátum: 2012. március 24. - 18:02:18 »
0 Show voters
Hát mostmár tuti :D

eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #7 Dátum: 2012. március 24. - 18:06:23 »
0 Show voters
eholdem.pwn(5) : fatal error 100: cannot read from file: \"eletters\"
Tesztelném, kíváncsi vagyok mûködésére.  :D
Csak még nem hallottam ilyen nevû .inc fájlról csak azért írok.
Nincs kedvem keresgetni meg kitalálni/megírni a hiányzó funkciókat.  :angel:

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #8 Dátum: 2012. március 24. - 18:14:24 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1332608783\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"19004\" data-ipsquote-contentclass=\"forums_Topic
eholdem.pwn(5) : fatal error 100: cannot read from file: \"eletters\"
Tesztelném, kíváncsi vagyok mûködésére.  :D
Csak még nem hallottam ilyen nevû .inc fájlról csak azért írok.
Nincs kedvem keresgetni meg kitalálni/megírni a hiányzó funkciókat.  :angel:
 
Köszi.
Meg is feledkeztem arról a fájlról.
Azt nem szeretném kiadni, úgyis csak egy töredékét használja a szkript.
Pár perc és frissítem.
Frissítve!
« Utoljára szerkesztve: 2012. március 24. - 18:17:37 írta Epsilon »

eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #9 Dátum: 2012. március 24. - 18:52:53 »
0 Show voters
Bakker Zeex pawncc.exe és pawnc.dll fájlját használom, rögtön írom a javítani valókat fordítási gondok vannak nálam.  :angel:
 
#define copyCards(%1,%2,%3,%4,%5); %5[0] = %1[0];%5[1] = %1[1];%5[2] = %1[2];%5[3] = %2;%5[4] = %3;%5[5] = %4[0];%5[6] = %4[1];
[/quote]
Pontos vesszõt törölni kell.
 
public pkr_NewRound();
public pkr_NewRound()

 
A felsõ public helyett forward.
 
public RoundEnd();
public RoundEnd()
public pkr_Alone();
public pkr_Alone()

 
Szintén.
És {} hiány végett reklamál még.
 error 037: invalid string (possibly non-terminated string)
 
new CardNames[13][9] =
{
{\"kettes\"},
{\"hármas\"},
{\"négyes\"},
{\"ötös\"},
[/quote]
De ezek a gondok lehet csak nálam jelentkeztek, apróságok amúgy, már javítottam.
Amúgy találtam egy texas holdem laperõsség leírást, ami eléggé érthetõen leírja az egyforma lapok közül melyik az erõsebb, ha érdekel.
http://www.pokerszabalyok.com/rank
Edit:
Ez nagyon tetszik nekem, hogy erre a logikai menetre nem gondoltam nem is értem. (mindig van új a nap alatt)
 
stock randomCard()
{
new card;
do card = 13*random(4)+random(13); while(card_picked[card]);
card_picked[card] = true;
return card;
}

 
Azt hiszem egy kis átalakítás után sebesség mérés teszt lesz, és ha nem bánod ezt a logikai megoldást felhasználom én is.
Nekem nagyon gyorsan kellene 5 újabb lap ami még nem volt leosztva, nem egyenként.
« Utoljára szerkesztve: 2012. március 24. - 19:12:13 írta ɐʞzssǝlosz »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #10 Dátum: 2012. március 24. - 19:20:55 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1332611573\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"19004\" data-ipsquote-contentclass=\"forums_Topic
Bakker Zeex pawncc.exe és pawnc.dll fájlját használom, rögtön írom a javítani valókat fordítási gondok vannak nálam.  :angel:
 
#define copyCards(%1,%2,%3,%4,%5); %5[0] = %1[0];%5[1] = %1[1];%5[2] = %1[2];%5[3] = %2;%5[4] = %3;%5[5] = %4[0];%5[6] = %4[1];
Pontos vesszõt törölni kell.
 
public pkr_NewRound();
public pkr_NewRound()

 
A felsõ public helyett forward.
 
public RoundEnd();
public RoundEnd()
public pkr_Alone();
public pkr_Alone()

 
Szintén.
És {} hiány végett reklamál még.
 error 037: invalid string (possibly non-terminated string)
 
new CardNames[13][9] =
{
{\"kettes\"},
{\"hármas\"},
{\"négyes\"},
{\"ötös\"},
[/quote]
De ezek a gondok lehet csak nálam jelentkeztek, apróságok amúgy, már javítottam.
Amúgy találtam egy texas holdem laperõsség leírást, ami eléggé érthetõen leírja az egyforma lapok közül melyik az erõsebb, ha érdekel.
http://www.pokerszabalyok.com/rank
Edit:
Ez nagyon tetszik nekem, hogy erre a logikai menetre nem gondoltam nem is értem. (mindig van új a nap alatt)
 
stock randomCard()
{
new card;
do card = 13*random(4)+random(13); while(card_picked[card]);
card_picked[card] = true;
return card;
}

 
Azt hiszem egy kis átalakítás után sebesség mérés teszt lesz, és ha nem bánod ezt a logikai megoldást felhasználom én is.
Nekem nagyon gyorsan kellene 5 újabb lap ami még nem volt leosztva, nem egyenként.
 
[/quote]
A fordítási hibák valóban csak nálad jelentkezhetnek. Másképp .amx-at hogyan töltöm fel? :D
A ;-t nem kell törölni (a definíció része, a gondakkor lenne, ha nem lenne a része --> empty statement), a publicot nem kötelezõ forwardra írni.(ugyanúgy kezeli a ; miatt)
Ha megnézed a linket, amit küldtél,a laperõsség ugyanolyan kezek esetén mindenhol a lapok magasságától függ, mint ahogy a szkriptemben is.
Ui: Használd nyugodtan a funkciót.
E: Ha válaszolsz, kérlek a saját hsz-d már ne idézd be, kösz.
« Utoljára szerkesztve: 2012. március 24. - 19:23:53 írta Epsilon »

eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #11 Dátum: 2012. március 24. - 19:40:24 »
0 Show voters
(Neked se kellett volna beidézni  ::|)
Tegyél egy -l jelet pawn.cfg fájlba és látni fogod a preprocesszor által lefordítottat. (a hosszú sor végét nézd)
E: (Ez lehet hogy csak Zeex fordítójánál van)
 
stock pkr_Best(playerid)
{
new cardcarry[7];
cardcarry[0] = flop[0];cardcarry[1] = flop[1];cardcarry[2] = flop[2];cardcarry[3] = turn;cardcarry[4] = river;cardcarry[5] = hand[playerid][0];cardcarry[6] = hand[playerid][1];;
new tmphand[5];
tmphand=BestHand(cardcarry);
return tmphand;
}
[/quote]
Köszi, használni fogom.
Mivel írtam egy gyors tesztet:
 
#include <a_samp>
enum
bla
{
fivecards_hand[10]
};
new
PP_Info[MAX_PLAYERS][bla];
new
bool:card_picked[52];
public
OnFilterScriptInit()
{
//...............................
new
time = GetTickCount();
for(new i; i < 100000; i++)
{
do
{
   RandomNumber(52, PP_Info[0][fivecards_hand], 10);
}
while(HasDuplicateValues(PP_Info[0][fivecards_hand], 10))
}
printf(\"1 módszer time: %dms 100.000 ezres ismétlõdésnél.\", GetTickCount() - time);
//..............................
time = GetTickCount();
for(new i; i < 100000; i++)
{
for(new p; p < 10; p++) // 10 darab nem egyforma véletlenszám összeállítása.
{
   PP_Info[0][fivecards_hand][p] = randomCard();
}
for(new d; d < sizeof card_picked; d++)   // randomCard segéd változójának törlése
{
   card_picked[d] = false;
}
}
printf(\"2 módszer time: %dms 100.000 ezres ismétlõdésnél.\", GetTickCount() - time);   
return 1;
}
//..............................
stock
randomCard()
{
new card;
do card = 13*random(4)+random(13); while(card_picked[card]);
card_picked[card] = true;
return card;
}
//..............................
stock
RandomNumber(value, array[ ], size = sizeof array)
{
for(new p = 0; p < size; p++) array[p] = random(value);
}
stock
HasDuplicateValues(const array[ ], size = sizeof array)
{
for(new f = 0; f < size - 1; ++f)
{
for(new c = f + 1; c < size; ++c)
{
   if(array[f] == array[c])
   {
      return true;
   }
}
}
return false;
}

 
És gyorsabb az általad használt változat:
 
[2012.03.24 19:37:13] 1 módszer time: 2856ms 100.000 ezres ismétlõdésnél.
[2012.03.24 19:37:15] 2 módszer time: 1841ms 100.000 ezres ismétlõdésnél.
[/quote]
Edit:
Bocsánat a reklámért de kicsit átalakítottam számomra megfelelõ állapotra és a gyorsasága ennyit javult:
[2012.03.24 20:11:06] 3 módszer time: 684ms 100.000 ezres ismétlõdésnél. (ami több mint negyede annak amit használtam eddig (idõben) vagyis több mint négyszer gyorsabb)
« Utoljára szerkesztve: 2012. március 24. - 20:20:46 írta ɐʞzssǝlosz »

eHoldem - Globális szerver-pókerasztal (Texas Hold\'Em)
« Válasz #12 Dátum: 2012. március 24. - 19:46:26 »
0 Show voters
Ez nagyon tetszik. Felis használom ha nem gond :).

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal