PageRenderTime 52ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/draft/draft_functions.php

https://github.com/beakid/md
PHP | 217 lines | 125 code | 33 blank | 59 comment | 32 complexity | 203334443a49678b84178ede6736a601 MD5 | raw file
  1. <?
  2. #denna fil har tillgŒng till $draft_info som Šr en select * from md_draft where pk_draft_id = $draft_id (stŠlls i draft.php);
  3. include("../generatepack.php");
  4. include_once("../functions.php");
  5. if($_POST[action] == "create_draft") {
  6. //verify data - yawn
  7. //make draft_name
  8. $draft_name_result = mysql_query("SELECT exp_shortname FROM md_exp WHERE pk_exp_id = $pack1 UNION ALL SELECT exp_shortname FROM md_exp WHERE pk_exp_id = $pack2 UNION ALL SELECT exp_shortname FROM md_exp WHERE pk_exp_id = $pack3");
  9. while($draft_name_values = mysql_fetch_array($draft_name_result)) {
  10. $draft_name = $draft_name . " " . $draft_name_values[exp_shortname];
  11. ltrim($draft_name);
  12. //insert data for now
  13. mysql_query("INSERT INTO md_draft(draft_password, draft_is_tournament, draft_name, max_players, show_picks, draft_speed, pack_1, pack_2, pack_3) VALUES('$password', $tour_after, '$draft_name', $max_players, $show_picks, $speed, $pack1, $pack2, $pack3)");
  14. $draft_id = mysql_insert_id();
  15. //join player (as seat #1, "the Creator")
  16. mysql_query("INSERT INTO md_draft2user(fk_draft_id, fk_user_id, seat_number) VALUES(".$draft_id.", $_SESSION[md_userid], 1)");
  17. //ett welcome-chat-message frŒn mdboten
  18. mysql_query("INSERT INTO md_chat (fk_draft_id, fk_user_id, chat_message, chat_date)
  19. VALUES ('$draft_id','1','Welcome to draft #$draft_id. Good luck and have fun!', NOW())");
  20. }
  21. header("Location: draft.php?id=".$draft_id);
  22. die();
  23. }
  24. elseif($_POST["action"] == "create_sealed")
  25. {
  26. //insert data for now
  27. $sealed_name = mysql_result(mysql_query("SELECT exp_shortname FROM md_exp WHERE pk_exp_id = $tourpack"),0);
  28. mysql_query("INSERT INTO md_draft(draft_name, max_players, draft_status, pack_1, pack_2, pack_3, draft_start, draft_is_sealed) VALUES('Sealed $sealed_name', 1, 3, '$tourpack', '$boosterpack1', '$boosterpack2', NOW(), 1)");
  29. $draft_id = mysql_insert_id();
  30. //join player
  31. mysql_query("INSERT INTO md_basicland (fk_user_id, fk_draft_id) VALUES ($_SESSION[md_userid], $draft_id)");
  32. mysql_query("INSERT INTO md_draft2user(fk_draft_id, fk_user_id) VALUES('$draft_id', $_SESSION[md_userid])");
  33. add_tourpack($draft_id,$tourpack,$boosterpack1,$boosterpack2);
  34. header("Location: draft.php?id=".$draft_id);
  35. die();
  36. }
  37. if($action == "join_draft") {
  38. //stoppa in spelaren i md_draft2user om man inte redan Å r med
  39. if(!mysql_num_rows(mysql_query("SELECT fk_user_id FROM md_draft2user WHERE fk_user_id = '$_SESSION[md_userid]' AND fk_draft_id = '$draft_id'")))
  40. {
  41. $highestseatnumber = mysql_result(mysql_query("SELECT seat_number FROM md_draft2user ORDER BY seat_number DESC LIMIT 0,1"),0);
  42. mysql_query("INSERT INTO md_draft2user(fk_draft_id, fk_user_id, seat_number) VALUES($draft_id,$_SESSION[md_userid], '".($highestseatnumber+1)."')");
  43. }
  44. }
  45. if($action == "leave_draft") {
  46. #finns det inte nŒgra andra fšrutom mig sjŠlv (och ev. bots, id 1)
  47. if(!mysql_num_rows(mysql_query("SELECT * FROM md_draft2user WHERE fk_draft_id = $draft_id AND fk_user_id != '1' AND fk_user_id != $_SESSION[md_userid]"))) {
  48. mysql_query("DELETE FROM md_draft WHERE pk_draft_id = $draft_id");
  49. mysql_query("DELETE FROM md_chat WHERE fk_draft_id = $draft_id");
  50. mysql_query("DELETE FROM md_basicland WHERE fk_draft_id = $draft_id");
  51. $packs = mysql_query("SELECT * FROM md_pack WHERE fk_draft_id = $draft_id");
  52. while($pack = mysql_fetch_array($packs))
  53. {
  54. mysql_query("DELETE FROM md_packcard WHERE fk_pack_id = $pack[pk_pack_id]");
  55. }
  56. mysql_query("DELETE FROM md_pack WHERE fk_draft_id = $draft_id");
  57. mysql_query("DELETE FROM md_draft2user WHERE fk_draft_id = $draft_id AND fk_user_id = $_SESSION[md_userid]");
  58. header("Location: index.php");
  59. die();
  60. }
  61. $myseatnumber = @mysql_result(mysql_query("SELECT seat_number FROM md_draft2user WHERE fk_user_id = $_SESSION[md_userid] AND fk_draft_id = $draft_id"),0);
  62. #if draft is not running, decrease higher seats with 1
  63. if($draft_info["draft_status"] == 0)
  64. {
  65. mysql_query("UPDATE md_draft2user SET seat_number = seat_number - 1 WHERE seat_number > $myseatnumber AND fk_draft_id = $draft_id");
  66. mysql_query("DELETE FROM md_draft2user WHERE fk_draft_id = $draft_id AND fk_user_id = $_SESSION[md_userid]");
  67. }
  68. elseif($draft_info["draft_status"] == 1)
  69. {
  70. mysql_query("DELETE FROM md_draft2user WHERE fk_draft_id = $draft_id AND fk_user_id = $_SESSION[md_userid]");
  71. mysql_query("UPDATE md_draft SET draft_status = 0 WHERE pk_draft_id = $draft_id");
  72. }
  73. else
  74. #annars, i en aktiv draft, plockar vi en bot (ID 1)
  75. {
  76. mysql_query("UPDATE md_draft2user SET fk_user_id = 1 WHERE fk_user_id = $_SESSION[md_userid] AND fk_draft_id = $draft_id");
  77. }
  78. header("Location: index.php");
  79. die();
  80. }
  81. if($_POST["action"] == "draft") {
  82. //hämtar diverse info om draften o kontrollerar sĺ man inte fuskar
  83. $pack_id = mysql_fetch_row(mysql_query("SELECT fk_pack_id, fk_card_id FROM md_packcard WHERE pk_packcard_id = $_POST[chosen_card] LIMIT 1"));
  84. //fundera ut vad fusk är och vad som ska kollas
  85. //draftar kortet man valt
  86. $pick_number = mysql_fetch_row(mysql_query("SELECT count(*) FROM md_packcard WHERE fk_user_id = 0 AND fk_pack_id = $pack_id[0] GROUP BY fk_pack_id"));
  87. mysql_query("UPDATE md_packcard SET fk_user_id = $_SESSION[md_userid], pick_number = 16 - $pick_number[0] WHERE pk_packcard_id = $_POST[chosen_card]");
  88. $_SESSION["draft_start"] = false;
  89. //hŠr fixar vi med statsen - labbvarning
  90. //$ignore_rating true -> ignore... annars tom
  91. //antal kort i packet - kortet man vŠljer i slutet bšr pŒverka mkt lite
  92. //man skickar in en klump med kort-id o ratings, inkl ett pick - antalet pŒverkar k-vŠrdet, likasŒ bšr userns rating gšra
  93. //lagar vi flera olika ratings eller bara en? tveksamt men jag tror nej till att bšrja med
  94. //hur viktar vi userns rating? som kvoten mot 1600? det dubbla? +12,5% resp +25% fšr en spelare med 1800
  95. //jag tror pŒ minimal pŒverkan av 1600-users...
  96. //ska varje pick gŒ in i statsen eller slumpat t.ex. 10%? fšr att minska last
  97. //1800-1550 -> 250
  98. //1600-1550 -> 50
  99. //1600 -> 50/100 -> x0,5
  100. //1800 -> 250/100 -> x2,5
  101. //2100 -> 550/100 ->x5,5
  102. //allt detta mŒste gŒs igenom o viktas om - utan tvekan
  103. //lŠgg till analys av vad man pickat sŒ att fŠrger Šr en del i analysen
  104. //t.ex:
  105. //man har gŒtt gršnt -> nŠr man pickar gršnt - det gršna kortet gŒr upp, de andra gršna gŒr ner,artifakt gŒr ner, gršna lŠnder gŒr ner(eller fŠrglšsa) MEN
  106. //allt som vi taggat som inte gršnt pŒverkas bara ytterst lite(eller ens alls?)
  107. //omvŠnt, gick man gršnt och plštsligt pickar ett blŒtt kort pŒverkar det alla kort som vanligt. detta innebŠr sammantaget att ju lŠngre in i draften man
  108. //kommer, ju fŠrre kort pŒverkar man genom sina val om man hŒller sig i sin fŠrg... hmm
  109. //grundvŠrde pŒ kort kontro aktuellt vŠrde fšr spelaren
  110. //dessutom tŠnker jag mig att hur lŒngt man kommit in i ett pack reflekterar pŒverkar kvŠrdet. detta gŠller ocksŒ efterkommande pack men frŒgan Šr: ska man
  111. //bšrja helt frŒn bšrjan eller ska man liksom gŒ i tre vŒgor nedŒt i k-vŠrdet dŠr starten pŒ varje pack Šr stšrre Šn dŠr man slutade fšrra packet men botten sen blir
  112. //lŠgre Šn fšrra packet osv...
  113. //hur fan vŠger alla dessa faktorer ihop... reflekterar det vad vi tror det gšr...
  114. //allt pickande o rŠknande syftar att rŠkna ut ett basvŠrde pŒ kortet - bŠst info fŒr man nŠr spelaren inte har pickat en massa ELLER om den pickat en massa o plštsligt byter fŠrg
  115. //berŠkna spelarens pickpool
  116. //just nu siktar vi bara pŒ fŠrger man man kan tŠnka sig att vŠga in critters/etc oxŒ
  117. //rad1-5 = fŠrgerna WUBRG
  118. //rad6 antal kort totalt
  119. $color_chk = mysql_query("SELECT count(*) as color FROM md_packcard, md_cards WHERE fk_user_id = $_SESSION[md_userid] AND fk_card_id = pk_card_id AND find_in_set('W',card_colortag)
  120. UNION ALL SELECT count(*) as color FROM md_packcard, md_cards WHERE fk_user_id = $_SESSION[md_userid] AND fk_card_id = pk_card_id AND find_in_set('U',card_colortag)
  121. UNION ALL SELECT count(*) as color FROM md_packcard, md_cards WHERE fk_user_id = $_SESSION[md_userid] AND fk_card_id = pk_card_id AND find_in_set('R',card_colortag)
  122. UNION ALL SELECT count(*) as color FROM md_packcard, md_cards WHERE fk_user_id = $_SESSION[md_userid] AND fk_card_id = pk_card_id AND find_in_set('B',card_colortag)
  123. UNION ALL SELECT count(*) as color FROM md_packcard, md_cards WHERE fk_user_id = $_SESSION[md_userid] AND fk_card_id = pk_card_id AND find_in_set('G',card_colortag)
  124. UNION ALL SELECT count(*) as color FROM md_packcard WHERE fk_user_id = $_SESSION[md_userid]");
  125. for($x = 1; $x<=6; $x++) {
  126. $color_values = mysql_fetch_array($color_chk);
  127. $color[$x] = $color_values[color];
  128. }
  129. $pick_id = $pack_id[1];
  130. $pick = $cardarray[$pick_id];
  131. //plocka ut picket frŒn alla kort
  132. unset($cardarray[$pick_id]);
  133. $x = count($cardarray);
  134. $query = "REPLACE into md_stats(fk_card_id, rating) VALUES";
  135. foreach ($cardarray as $fk_card_id => $trash) {
  136. $k_value = $x*($_SESSION[md_user_rating]-1550)*0.0025;
  137. $pick_rating_change=round($k_value*(1-(1/(pow(10, (($trash-$pick) / 400)) + 1))));
  138. $total_rating_change = $total_rating_change + $pick_rating_change;
  139. $query = $query."($fk_card_id, $trash-$pick_rating_change),";
  140. }
  141. $query = $query."($pick_id, $pick+$total_rating_change)";
  142. //echo $query;
  143. mysql_query($query);
  144. //labbvarning slut - inga mer stats
  145. //skickar packet till nästa spelare och gömmer det tills alla spelare skickat sina packs
  146. //pack 2 går andra hållet
  147. if($draft_info[present_pack] == 2) {
  148. mysql_query("UPDATE md_pack SET pack_status = 1, seat_number = if(seat_number > 1, seat_number - 1, $draft_info[max_players]) WHERE pk_pack_id = $pack_id[0]");
  149. } else {
  150. mysql_query("UPDATE md_pack SET pack_status = 1, seat_number = if(seat_number < $draft_info[max_players], seat_number + 1, 1) WHERE pk_pack_id = $pack_id[0]");
  151. }
  152. //uppdaterer status på spelaren - lite overkill men det funkar
  153. mysql_query("UPDATE md_draft2user SET seat_status = 3 WHERE fk_draft_id = $draft_id AND fk_user_id = $_SESSION[md_userid]");
  154. //har alla spelare pickat? visa då nästa stack, eventuellt nästa pack
  155. $packs_status = mysql_fetch_row(mysql_query("SELECT count(*) FROM md_pack, md_draft WHERE pack_status = 1 AND fk_draft_id = $draft_id AND md_draft.present_pack = md_pack.pack_number AND md_draft.pk_draft_id = md_pack.fk_draft_id"));
  156. if($packs_status[0] == $draft_info[max_players]) {
  157. //om man just tog 15e kortet och alla andra oxå plockat sina kort: öppna nästa pack, sätt nuvarande som färdigt (status 2)
  158. if($pick_number[0] == 1) {
  159. mysql_query("UPDATE md_draft SET draft_status = IF(present_pack = 3, 3, 2), present_pack = IF(present_pack < 3, present_pack + 1, 0) WHERE pk_draft_id = $draft_id");
  160. mysql_query("UPDATE md_pack SET pack_status = 2 WHERE fk_draft_id = $draft_id AND pack_status = 1");
  161. //tog vi sista packet
  162. } else {
  163. mysql_query("UPDATE md_pack SET pack_status = 0 WHERE fk_draft_id = $draft_id AND pack_status = 1");
  164. }
  165. mysql_query("UPDATE md_draft2user SET seat_status = 2 WHERE fk_draft_id = $draft_id");
  166. }
  167. header("Location: draft.php?id=".$draft_id);
  168. die();
  169. }
  170. #check som kšrs vid reload av ostartad draft
  171. if($draft_info["draft_status"] == "0" && $_SESSION["md_userid"] && $draft_id)
  172. {
  173. //kontrollera antalet spelare i draften - Å r vi max_players: slumpa ut seats, aktivera draften, skapa packs
  174. //man ska nog se till att stÅ da i md_draft2user ofta, typ vi kanske i samband med inlogg ska skilja pÅš offline, online (men inte aktiv sista 5)
  175. //samt online(aktiv)
  176. //spelaren som joinar sist behöver obv inte konfirma att han är där utan kommer bara till sidan "waiting for other players to confirm"
  177. $present_players = mysql_fetch_row(mysql_query("SELECT count(*) FROM md_draft2user WHERE fk_draft_id = $draft_id"));
  178. if($present_players[0] >= $draft_info["max_players"])
  179. {
  180. start_draft($draft_id);
  181. header("Location: draft.php?id=".$draft_id);
  182. }
  183. }
  184. ?>