Axelut

puncte cs16

May 31st, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Pentru a implementa aceste noi funcționalități în pluginul tău, poți modifica codul existent astfel:
  2.  
  3. pawn
  4. Copy code
  5. #pragma semicolon 1
  6.  
  7. new g_MySQLHandle
  8.  
  9. const KILL_SCORE = 1
  10. const DEATH_PENALTY = 1
  11. const TEAM_KILL_PENALTY = 3
  12. const ROUND_WIN_BONUS = 2
  13. const ROUND_LOSS_PENALTY = 2
  14. const TEAM_WIN_BONUS = 15
  15.  
  16. new g_PlayerScores[MAX_CLIENTS]
  17. new g_TeamScores[2]
  18.  
  19. public plugin_init()
  20. {
  21. register_event("player_death", "OnPlayerDeath", "a", "1=0", "2=0")
  22. register_event("round_end", "OnRoundEnd")
  23. register_event("client_disconnected", "OnClientDisconnected", "ed", "1=0", "2=0")
  24. register_event("client_connected", "OnClientConnected", "ed", "1=0", "2=0")
  25.  
  26. g_MySQLHandle = mysql_connect("hostname", "username", "password", "database")
  27. if (g_MySQLHandle == SQL_INVALID_HANDLE)
  28. {
  29. log_amx("Eroare la conectarea la baza de date MySQL!")
  30. }
  31. }
  32.  
  33. public OnPlayerDeath(victim, killer, weapon)
  34. {
  35. new victimId = read_data(victim, "userid")
  36. new killerId = read_data(killer, "userid")
  37. new victimTeam = get_user_team(victimId)
  38. new killerTeam = get_user_team(killerId)
  39.  
  40. if (victimId != 0 && killerId != 0 && !is_user_bot(victimId) && !is_user_bot(killerId))
  41. {
  42. // Verifică dacă jucătorul a omorât membrii echipei adverse
  43. if (victimTeam != killerTeam && victimTeam != 0 && killerTeam != 0)
  44. {
  45. new enemyPlayersKilled = 0
  46. for (new i = 1; i <= MaxClients; i++)
  47. {
  48. if (i == killerId)
  49. continue
  50.  
  51. new playerTeam = get_user_team(i)
  52. if (playerTeam != killerTeam && playerTeam != 0)
  53. enemyPlayersKilled++
  54. }
  55.  
  56. if (enemyPlayersKilled >= 3 && enemyPlayersKilled <= 5)
  57. {
  58. g_PlayerScores[killerId] += enemyPlayersKilled
  59. client_print(killerId, print_chat, "Ai primit %d puncte bonus pentru omorârea a %d inamici!", enemyPlayersKilled, enemyPlayersKilled)
  60. }
  61. }
  62.  
  63. // Verifică dacă jucătorul a omorât un coechipier
  64. if (victimTeam == killerTeam && victimTeam != 0 && killerTeam != 0)
  65. {
  66. g_PlayerScores[killerId] -= TEAM_KILL_PENALTY
  67. client_print(killerId, print_chat, "Ai fost penalizat cu %d puncte pentru omorârea unui coechipier!", TEAM_KILL_PENALTY)
  68. }
  69.  
  70. // Adaugă/decrease punctajul în funcție de tipul de kill și rezultatul rundei
  71. new isHeadshot = (weapon == CSW_AK47 || weapon == CSW_AUG || weapon == CSW_AWP || weapon == CSW_DEAGLE || weapon == CSW_FAMAS || weapon == CSW_G3SG1 || weapon == CSW_GLOCK18 || weapon == CSW_M4A1 || weapon == CSW_M249 || weapon == CSW_MAC10 || weapon == CSW_P90 || weapon == CSW_P228 || weapon == CSW_SCOUT || weapon == CSW_TMP || weapon == CSW_UMP45 || weapon == CSW_USP45 || weapon == CSW_XM1014)
  72.  
  73. if (isHeadshot)
  74. {
  75. g_PlayerScores[killerId] += KILL_SCORE + 1
  76. client_print(killerId, print_chat, "Ai primit %d puncte pentru un kill cu headshot!", KILL_SCORE + 1)
  77. }
  78. else
  79. {
  80. g_PlayerScores[killerId] += KILL_SCORE
  81. client_print(killerId, print_chat, "Ai primit %d puncte pentru un kill normal!", KILL_SCORE)
  82. }
  83.  
  84. // Penalizare pentru jucătorul ucis
  85. g_PlayerScores[victimId] -= DEATH_PENALTY
  86. client_print(victimId, print_chat, "Ai fost penalizat cu %d puncte pentru moartea ta!", DEATH_PENALTY)
  87.  
  88. // Actualizează punctajele în baza de date
  89. mysql_tquery(g_MySQLHandle, "UPDATE player_scores SET score = score + %d WHERE player_id = %d", g_PlayerScores[killerId], killerId)
  90. mysql_tquery(g_MySQLHandle, "UPDATE player_scores SET score = score - %d WHERE player_id = %d", DEATH_PENALTY, victimId)
  91. }
  92. }
  93.  
  94. public OnRoundEnd(winner)
  95. {
  96. for (new i = 1; i <= MaxClients; i++)
  97. {
  98. new playerTeam = get_user_team(i)
  99.  
  100. if (playerTeam == winner)
  101. {
  102. g_PlayerScores[i] += ROUND_WIN_BONUS
  103. client_print(i, print_chat, "Ai primit %d puncte bonus pentru câștigarea runde!", ROUND_WIN_BONUS)
  104. }
  105. else
  106. {
  107. g_PlayerScores[i] -= ROUND_LOSS_PENALTY
  108. client_print(i, print_chat, "Ai fost penalizat cu %d puncte pentru pierderea runde!", ROUND_LOSS_PENALTY)
  109. }
  110.  
  111. // Actualizează punctajele în baza de date
  112. mysql_tquery(g_MySQLHandle, "UPDATE player_scores SET score = score + %d WHERE player_id = %d", g_PlayerScores[i], i)
  113. }
  114.  
  115. new winningTeam = winner - 2
  116. g_TeamScores[winningTeam] += 1
  117.  
  118. if (g_TeamScores[winningTeam] >= 16)
  119. {
  120. for (new i = 1; i <= MaxClients; i++)
  121. {
  122. new playerTeam = get_user_team(i)
  123.  
  124. if (playerTeam == winner)
  125. {
  126. g_PlayerScores[i] += TEAM_WIN_BONUS
  127. client_print(i, print_chat, "Ai primit %d puncte bonus pentru câștigarea a 16 runde!", TEAM_WIN_BONUS)
  128. }
  129.  
  130. // Actualizează punctajele în baza de date
  131. mysql_tquery(g_MySQLHandle, "UPDATE player_scores SET score = score + %d WHERE player_id = %d", g_PlayerScores[i], i)
  132. }
  133. }
  134. }
  135.  
  136. public OnClientDisconnected(client)
  137. {
  138. mysql_tquery(g_MySQLHandle, "UPDATE player_scores SET score = %d WHERE player_id = %d", g_PlayerScores[client], client)
  139. }
  140.  
  141. public OnClientConnected(client)
  142. {
  143. new query[128]
  144. format(query, sizeof(query), "SELECT score FROM player_scores WHERE player_id = %d", client)
  145. new result = mysql_query(g_MySQLHandle, query)
  146. if (mysql_num_rows(result) > 0)
  147. {
  148. mysql_fetch_row(result)
  149. g_PlayerScores[client] = mysql_get_int(result, "score")
  150. }
  151. mysql_free_result(result)
  152. }
  153. În acest exemplu modificat, am adăugat următoarele funcționalități:
  154.  
  155. Verificarea numărului de inamici uciși pentru acordarea punctelor bonus.
  156. Penalizarea pentru omorul coechipierilor.
  157. Acordarea de puncte bonus sau penalizare pentru câștigarea/pierderea rundei.
  158. Verificarea numărului de runde câștigate de echipă și acordarea unui bonus pentru atingerea numărului de 16 runde câștigate.
  159. Asigură-te că ai înlocuit valorile "hostname", "username", "password" și "database" cu informațiile corespunzătoare pentru conectarea la baza de date MySQL.
  160.  
  161.  
  162.  
  163.  
  164.  
  165. User
  166. Cum trebuie sa fac baza de date MySQL?
  167. ChatGPT
  168. Pentru a crea baza de date MySQL și tabela corespunzătoare pentru stocarea scorurilor jucătorilor, urmează acești pași:
  169.  
  170. Asigură-te că ai instalat și configurat serverul MySQL pe serverul tău.
  171.  
  172. Conectează-te la serverul MySQL utilizând un client de gestionare a bazelor de date, cum ar fi phpMyAdmin sau MySQL Workbench.
  173.  
  174. Creează o bază de date pentru pluginul tău CS 1.6. De exemplu, poți utiliza următoarea comandă SQL pentru a crea o bază de date numită cs16_scores:
  175.  
  176. sql
  177. Copy code
  178. CREATE DATABASE cs16_scores;
  179. Selectează baza de date cs16_scores pentru a lucra cu ea:
  180.  
  181. sql
  182. Copy code
  183. USE cs16_scores;
  184. Creează tabela player_scores pentru a stoca scorurile jucătorilor. Aceasta va conține următoarele câmpuri: player_id (identificatorul jucătorului) și score (scorul jucătorului). Poți folosi următoarea comandă SQL pentru a crea tabela:
  185.  
  186. sql
  187. Copy code
  188. CREATE TABLE player_scores (
  189. player_id INT PRIMARY KEY,
  190. score INT
  191. );
  192. Acestă comandă creează tabela player_scores cu două coloane: player_id și score.
  193.  
  194. Acum, baza de date și tabela pentru stocarea scorurilor jucătorilor au fost create cu succes. Puteți utiliza această bază de date în pluginul tău CS 1.6 pentru a stoca și actualiza scorurile jucătorilor.
  195.  
  196. Asigură-te că ai configurat corespunzător informațiile de conectare la baza de date MySQL în codul pluginului, în locurile marcate cu "hostname", "username", "password" și "database".
Add Comment
Please, Sign In to add comment