Hace mas de 1 año o mas, @RusselNight me hizo un plugin para una manía que tenia en ese tiempo, ahora ya no le doy uso, por lo cual prefiero compartirlo con ustedes y que alguno le de algún uso de acuerdo a sus necesidades y que no se pierda en mi pastebin esperando que se borre automaticamente
Pueden cambiar las variables como quieran (cs_set_user_money y cs_get_user_money) a las que ustedes estimen conveniente, yo deje las del juego en si ya que usaba otras custom.
Hay un "pozo" donde irán a parar la mitad de lo que apostaron y perdieron, Ejemplo: Si apostaron 6$ y perdieron la apuesta, iran 3$ al pozo.
Hay una pequeña chance de que alguien gane el pozo, puede editar con cuanto $ quieran que parta el pozo.
Hay otra opción para apostar todo, pueden doblar lo que ganaron o perderlo todo, 50 y 50.
Hay otra version mejor, la subire un rato mas.
Primera version estable.
Version "final", en esta, ademas de ganar el doble de lo apostado o perder lo apostado, hay unas probabilidades de que ganes otros montos, todo es facil de editar a sus gustos, es cosa de ver y reemplazar.
Pueden cambiar las variables como quieran (cs_set_user_money y cs_get_user_money) a las que ustedes estimen conveniente, yo deje las del juego en si ya que usaba otras custom.
Hay un "pozo" donde irán a parar la mitad de lo que apostaron y perdieron, Ejemplo: Si apostaron 6$ y perdieron la apuesta, iran 3$ al pozo.
Hay una pequeña chance de que alguien gane el pozo, puede editar con cuanto $ quieran que parta el pozo.
Hay otra opción para apostar todo, pueden doblar lo que ganaron o perderlo todo, 50 y 50.
Hay otra version mejor, la subire un rato mas.
Primera version estable.
Código PHP:
#include <amxmodx>
#include <cstrike>
#define PLUGIN "Sistema de Apuestas"
#define VERSION "2.1"
#define AUTHOR "RusselNight"
new const g_szPrefijo[] = "AMXX";
new const g_iApuestas[] = { 2, 4, 6, 8 }; //Numeros pares
new g_iCantidad_Apostada[33], g_iPozo;
new cvar_Pozo_Inicial, cvar_Min_ToN;
new bool:g_bPrimer_Ronda, bool:g_bApostando[33];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("HLTV", "ev_Nueva_Ronda", "a", "1=0", "2=0");
register_clcmd("say /suerte", "Mostrar_MApuestas");
register_clcmd("say_team /suerte", "Mostrar_MApuestas");
register_clcmd("say /pozo", "Monedas_Pozo");
register_clcmd("say_team /pozo", "Monedas_Pozo");
register_clcmd("say /melajuego", "Mostrar_MSuerteExtrema");
register_clcmd("say_team /melajuego", "Mostrar_MSuerteExtrema");
cvar_Pozo_Inicial = register_cvar("monedas_pozo_inicial", "10");
cvar_Min_ToN = register_cvar("monedas_minimas_ton", "50");
}
public client_putinserver(id)
{
g_iCantidad_Apostada[id] = 0;
g_bApostando[id] = false;
}
public ev_Nueva_Ronda()
{
if(g_bPrimer_Ronda)
{
g_iPozo = get_pcvar_num(cvar_Pozo_Inicial);
g_bPrimer_Ronda = false;
client_print_color(0, "^4[%s] ^1El pozo comienza con^4 %d $^1.", g_szPrefijo, get_pcvar_num(cvar_Pozo_Inicial));
}
}
public Mostrar_MApuestas(id)
{
new menu, Text[500], i;
formatex(Text, charsmax(Text), "\r[\y%s\r] \wMenu de Apuestas", g_szPrefijo);
menu = menu_create(Text, "Funcion_MApuestas");
for(i = 0; i < sizeof g_iApuestas; i++)
{
formatex(Text, charsmax(Text), "\wApostar \r%d \wmonedas", g_iApuestas[i]);
menu_additem(menu, Text);
}
menu_setprop(menu, MPROP_EXITNAME, "\r(\dCerrar Menu\r)");
menu_display(id, menu, 0);
}
public Funcion_MApuestas(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_bApostando[id])
{
client_print_color(id, "^4[%s] ^1Ya estas realizando una apuesta, por favor espera...", g_szPrefijo);
return PLUGIN_HANDLED;
}
if(cs_get_user_money(id) < g_iApuestas[item])
{
Monedas_Necesarias(id, g_iApuestas[item]);
return PLUGIN_HANDLED;
}
g_iCantidad_Apostada[id] = g_iApuestas[item];
g_bApostando[id] = true;
client_print_color(id, "^4[%s] ^1Acabas de apostar^4 %d $^1. Espera^4 3 ^1segundos...", g_szPrefijo, g_iCantidad_Apostada[id]);
set_task(3.0, "task_Apuesta", id);
return PLUGIN_HANDLED;
}
public Mostrar_MSuerteExtrema(id)
{
new Text[250], menu;
formatex(Text, charsmax(Text), "\r[\y%s\r] \wA todo o nada^nQuieres apostar todas tus monedas?", g_szPrefijo);
menu = menu_create(Text, "Funcion_MSuerteExtrema");
menu_additem(menu, "Si, \rAPOSTAR TODO")
menu_additem(menu, "No, \dSOY UN COBARDE")
menu_setprop(menu, MPROP_EXITNAME, "\r(\dCerrar Menu\r)");
menu_display(id, menu, 0);
}
public Funcion_MSuerteExtrema(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
if(g_bApostando[id])
{
client_print_color(id, "^4[%s] ^1Ya estas realizando una apuesta, por favor espera...", g_szPrefijo);
return PLUGIN_HANDLED;
}
if(cs_get_user_money(id) < get_pcvar_num(cvar_Min_ToN))
{
client_print_color(id, "^4[%s] ^1Necesitas al menos^4 %d $ ^1para esta apuesta", g_szPrefijo, get_pcvar_num(cvar_Min_ToN))
return PLUGIN_HANDLED;
}
new szNombre[32];
get_user_name(id, szNombre, charsmax(szNombre));
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^1apuesta todas su dinero ^3(%d)^1...", g_szPrefijo, szNombre, cs_get_user_money(id));
set_task(5.0, "task_SuerteExtrema", id);
g_bApostando[id] = true;
}
case 1:
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public Pozo_Ganado(id)
{
new szNombre[33];
get_user_name(id, szNombre, charsmax(szNombre));
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^1gano el pozo!!! ^3(%d $)", g_szPrefijo, szNombre, g_iPozo);
cs_set_user_money(id, (cs_get_user_money(id) + g_iPozo));
g_iPozo = get_pcvar_num(cvar_Pozo_Inicial);
client_print_color(0, "^4[%s] ^1El pozo se ha reiniciado. Pozo actual:^4 %d $^1.", g_szPrefijo, get_pcvar_num(cvar_Pozo_Inicial));
return PLUGIN_HANDLED;
}
public Monedas_Pozo(id)
{
client_print_color(id, "^4[%s] ^1El pozo tiene^4 %d ^1$.", g_szPrefijo, g_iPozo);
return PLUGIN_HANDLED;
}
public task_Apuesta(id)
{
switch(random_num(1, 100))
{
case 1..69:
{
Apuesta_Perdida(id, g_iCantidad_Apostada[id]);
}
case 70..99:
{
Apuesta_Ganada(id, g_iCantidad_Apostada[id]);
}
case 100:
{
Pozo_Ganado(id);
}
}
g_bApostando[id] = false;
return PLUGIN_HANDLED;
}
public task_SuerteExtrema(id)
{
new szNombre[32];
get_user_name(id, szNombre, charsmax(szNombre));
switch(random_num(1, 100))
{
case 1..40:
{
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^3PERDIO ^1todas su dinero!!! ^3(-%d monedas)", g_szPrefijo, szNombre, cs_get_user_money(id));
cs_set_user_money(id, 0);
}
case 41..50:
{
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^3GANO ^1el doble de su dinero!!! ^3(+%d monedas)", g_szPrefijo, szNombre, cs_get_user_money(id));
cs_set_user_money(id, (cs_get_user_money(id) * 2));
}
case 51..100:
{
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^3PERDIO ^1todas su dinero!!! ^3(-%d monedas)", g_szPrefijo, szNombre, cs_get_user_money(id));
cs_set_user_money(id, 0);
}
}
g_bApostando[id] = false;
return PLUGIN_HANDLED;
}
stock Apuesta_Ganada(id, cantidad)
{
new szNombre[32]
get_user_name(id, szNombre, charsmax(szNombre));
cs_set_user_money(id, (cs_get_user_money(id) + cantidad));
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^1gano su apuesta! Se le acreditaron^4 %d $$^1.", g_szPrefijo, szNombre, cantidad);
return PLUGIN_HANDLED;
}
stock Apuesta_Perdida(id, cantidad)
{
new szNombre[32]
get_user_name(id, szNombre, charsmax(szNombre));
cs_set_user_money(id, (cs_get_user_money(id) - cantidad));
client_print_color(0, "^4[%s] ^1El jugador^4 %s ^1perdio su apuesta.^4 %d ^1$ van al pozo.", g_szPrefijo, szNombre, (cantidad / 2));
g_iPozo += (cantidad / 2);
return PLUGIN_HANDLED;
}
stock Monedas_Necesarias(id, cantidad)
{
client_print_color(id, "^4[%s] ^1Necesitas al menos^4 %d $ ^1para hacer esta apuesta.", g_szPrefijo, cantidad);
return PLUGIN_HANDLED;
}
stock client_print_color(id, const input[], any:...)
{
static szMsg[191], msgSayText;
if (!msgSayText)
msgSayText = get_user_msgid("SayText");
vformat(szMsg, 190, input, 3);
replace_all(szMsg, 190, "!g", "^4");
replace_all(szMsg, 190, "!y", "^1");
replace_all(szMsg, 190, "!team", "^3");
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
write_byte(id ? id : 33);
write_string(szMsg);
message_end();
}
Version "final", en esta, ademas de ganar el doble de lo apostado o perder lo apostado, hay unas probabilidades de que ganes otros montos, todo es facil de editar a sus gustos, es cosa de ver y reemplazar.
Código PHP:
#include <amxmodx>
#include <cstrike>
new const Ganar[] = { "events/enemy_died.wav" } // Ganar una apuesta
new const Perder[] = { "events/friend_died.wav" } // Perer una apuesta
enum Colors
{
Gris = 33,
Rojo,
Azul
}
enum _DATA_BET { BET_AMOUNT, BET_MULTIPLIER };
new const g_PluginInfo[][] = { "Betting System", "v1.0", "RusselNight", "AMXX" };
new const g_BetAmounts[][_DATA_BET] =
{
{ 2, 1 },
{ 4, 2 },
{ 6, 3 },
{ 8, 4 }
};
new bool:g_bPlayerBetting[33] = false, g_iBetAmount[33], Float:g_fTimeBetProgress = 5.0, g_iPozo, g_iMinAmountDoN;
new bool:g_bFirstRound = true;
public plugin_init()
{
register_plugin(g_PluginInfo[0], g_PluginInfo[1], g_PluginInfo[2]);
register_event("HLTV", "ev_NewRound", "a", "1=0", "2=0");
register_clcmd("say /suerte", "clcmd_Bet");
register_clcmd("say /melajuego", "clcmd_Bet");
register_clcmd("say /pozo", "clcmd_Pozo");
}
public plugin_precache()
{
precache_sound(Ganar)
precache_sound(Perder)
}
public client_disconnect(id)
{
g_bPlayerBetting[id] = false;
g_iBetAmount[id] = 0
}
public ev_NewRound()
{
if(g_bFirstRound)
{
g_iPozo = 10;
g_iMinAmountDoN = 100;
g_bFirstRound = false;
}
}
public clcmd_Bet(id)
{
Show_BetM(id);
return PLUGIN_HANDLED;
}
public Show_BetM(id)
{
static szText[256], iMenu, i;
formatex(szText, charsmax(szText), "Menu de Suerte");
iMenu = menu_create(szText, "Handled_BetM");
for(i = 0; i < sizeof(g_BetAmounts); i++)
{
formatex(szText, charsmax(szText), "%d de $$ - x%d (Multiplicar ganancia por x%d)" , g_BetAmounts[i][BET_AMOUNT], g_BetAmounts[i][BET_MULTIPLIER], g_BetAmounts[i][BET_MULTIPLIER]);
menu_additem(iMenu, szText);
}
if(cs_get_user_money(id) >= g_iMinAmountDoN)
{
menu_additem(iMenu, "\wJugar\y ME LA JUEGO");
}
else
{
formatex(szText, charsmax(szText), "\dJugar ME LA JUEGO \y[Necesitas $%d]", g_iMinAmountDoN);
menu_additem(iMenu, szText);
}
menu_setprop(iMenu, MPROP_EXITNAME, "\d[\rCerrar Menu\d]");
menu_display(id, iMenu);
return PLUGIN_HANDLED
}
public Handled_BetM(id, iMenu, iItem)
{
new szName[32];
get_user_name(id, szName, charsmax(szName));
if(iItem == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
if(g_bPlayerBetting[id])
{
ChatColor(id, Azul, "!g[%s]!y Ya estas!g realizando una apuesta.", g_PluginInfo[3]);
return PLUGIN_HANDLED;
}
if(iItem >= sizeof(g_BetAmounts))
{
if(cs_get_user_money(id) < g_iMinAmountDoN)
{
ChatColor(id, Azul,"!g[%s]!y No tienes!g suficiente $$.", g_PluginInfo[3]);
return PLUGIN_HANDLED;
}
ChatColor(0, Azul, "!g[%s]!t %s!y aposto toda su dinero!g (%d)!y en!g Me la juego!!", g_PluginInfo[3], szName, cs_get_user_money(id));
set_task(g_fTimeBetProgress, "Bet_DoN_Result", id);
}
else
{
if(cs_get_user_money(id) < g_BetAmounts[iItem][BET_AMOUNT])
{
ChatColor(id, Azul, "!g[%s]!y No tienes!g dinero suficiente!.", g_PluginInfo[3]);
return PLUGIN_HANDLED;
}
ChatColor(0, Azul, "!g[%s]!t %s!y - aposto!g %d de $$.", g_PluginInfo[3], szName, g_BetAmounts[iItem][BET_AMOUNT]);
set_task(g_fTimeBetProgress, "Bet_Result", id);
}
g_bPlayerBetting[id] = true;
g_iBetAmount[id] = iItem;
return PLUGIN_HANDLED;
}
public Bet_Result(id)
{
if(!is_user_connected(id))
return;
new szName[32];
get_user_name(id, szName, charsmax(szName));
switch(random_num(1, 103))
{
case 1..25:
{
ChatColor(0, Azul, "!g[%s]!t %s!y - Gano!g %d de $$...", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT]);
client_cmd(id, "spk %s", Ganar)
cs_set_user_money(id, (cs_get_user_money(id) + g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT]));
}
case 26..85:
{
ChatColor(0, Azul, "!g[%s]!t %s!y perdio!g %d de $$!", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT]);
client_cmd(id, "spk %s", Perder)
g_iPozo += (g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT]/4);
}
case 86:
{
ChatColor(0, Azul, "!g[%s]!t %s -!g GANO EL POZO! - !y%d de $$!", g_PluginInfo[3], szName, g_iPozo);
client_cmd(id, "spk %s", Ganar)
cs_set_user_money(id, (cs_get_user_money(id) + g_iPozo));
g_iPozo = 10;
}
case 87..90:
{
ChatColor(0, Azul, "!g[%s]!t %s!y Gano!g %d de $$ X%d!!g ( +%d $$)", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT], g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER], g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT]*g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]);
cs_set_user_money(id, cs_get_user_money(id) + g_BetAmounts[g_iBetAmount[id]][BET_AMOUNT] * g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER])
client_cmd(id, "spk %s", Ganar)
}
case 91..94:
{
ChatColor(0, Azul, "!g[%s]!t %s!y Gano!g 16x%d de $$!g (+%d $$)", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER], (16*g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]));
client_cmd(id, "spk %s", Ganar)
cs_set_user_money(id, cs_get_user_money(id) + g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]*16);
}
case 95..98:
{
ChatColor(0, Azul, "!g[%s]!t %s!y Gano!g 32x%d de $$!g (+%d $$)", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER], (32*g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]));
client_cmd(id, "spk %s", Ganar)
cs_set_user_money(id, cs_get_user_money(id) + g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]*32);
}
case 99..102:
{
ChatColor(0, Azul, "!g[%s]!t %s!y Gano!g 88x%d de $$!g (+%d $$)", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER], (88*g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]));
client_cmd(id, "spk %s", Ganar)
cs_set_user_money(id, cs_get_user_money(id) + g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]*88);
}
case 103:
{
ChatColor(0, Azul, "!g[%s]!t %s!y Gano!g 160x%d de $$!g (+%d $$)", g_PluginInfo[3], szName, g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER], (160*g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]));
client_cmd(id, "spk %s", Ganar)
cs_set_user_money(id, cs_get_user_money(id) + g_BetAmounts[g_iBetAmount[id]][BET_MULTIPLIER]*160);
}
}
g_bPlayerBetting[id] = false;
g_iBetAmount[id] = 0;
}
public Bet_DoN_Result(id)
{
if(!is_user_connected(id))
return;
new szName[32];
get_user_name(id, szName, charsmax(szName));
switch(random_num(1, 100))
{
case 1..20:
{
ChatColor(0, Azul, "!g[%s]!t %s!y gano el!g DOBLE DE SU DINERO!! !g(+%d $$)", g_PluginInfo[3], szName, cs_get_user_money(id));
cs_set_user_money(id, cs_get_user_money(id) * 2);
}
case 21..100:
{
ChatColor(0, Azul, "!g[%s]r!t %s!y perdio toda su!g DINEROy en el!g Me la juego!! (-%d $$)", g_PluginInfo[3], szName, cs_get_user_money(id))
client_cmd(id, "spk %s", Perder)
g_iPozo += (cs_get_user_money(id) / 4);
cs_set_user_money(id, 0);
}
}
g_bPlayerBetting[id] = false;
g_iBetAmount[id] = 0;
}
public clcmd_Pozo(id)
{
ChatColor(id, Azul, "!g[%s]!y Dinero acumulado en el!g POZO: %d $$", g_PluginInfo[3], g_iPozo);
return PLUGIN_HANDLED;
}
stock ChatColor(id, Colors:color, msg[], any:...)
{
static szMsg[191], msgSayText;
#define teaminfo_sent(%0) (TeamInfoSent & (1<<%0))
if (!msgSayText)
msgSayText = get_user_msgid("SayText");
vformat(szMsg, 190, msg, 4);
replace_all(szMsg, 190, "!g", "^4");
replace_all(szMsg, 190, "!y", "^1");
replace_all(szMsg, 190, "!t", "^3");
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
write_byte(color ? (_:color) : 33);
write_string(szMsg);
message_end();
}
public chatcolor_send_teaminfo(id)
{
if (!is_user_connected(id))
return;
static msgTeamInfo;
if (!msgTeamInfo)
msgTeamInfo = get_user_msgid("TeamInfo");
static const pTeams[][] = { "", "TERRORIST", "CT" };
for (new pid = 0; pid < 3; pid++)
{
message_begin(MSG_ONE_UNRELIABLE, msgTeamInfo, .player = id)
write_byte(pid+33)
write_string(pTeams[pid])
message_end()
}
}