Guest User

Untitled

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