Re: [Russian Roulette]: Revolver
Posted: 2014 Nov 06 20:33
O kam vidurkį išvedei? Gi čia ir buvo visa esmė sukimo. Dabar turėtų ant tos pačios kulkos visada sustoti.
DeadChance
vietą.nicexFrostas wrote:Padariau reklaminę žinutę apie rusišką ruletę ir ml.
Turėtų veikti. Bandykis.laimiukas3 wrote:manau logiska butu jaigu vienas zaidejas galetu zaisti tik viena karta per raunda
Code: Select all
#include <amxmodx>#include <hamsandwich>#include <cstrike> #define DeadChance(%1) (%1 > random(6)) #define TASKID_SPIN 4871 new const g_WinRewards[] = { 0, 250, 500, 2500, 5000, 10000 }; new bool: g_bSpinning[33];new bool: g_bShoot[33];new bool: used[33]; new Float: g_fSpinSpeed[33]; new g_iBullets[33];new g_iBulletPos[33]; public plugin_init(){ register_plugin("[Russian Roulette]: Revolver", "1.2", "Lightas"); RegisterHam(Ham_Killed, "player", "Forward_PlayerKilled", 1); register_dictionary("Revolver.txt"); register_clcmd("say /revolver", "Clcmd_Revolver"); set_task(120.0, "Task_Revolver_Ad", _, _, _, "b") RegisterHam(Ham_Spawn, "player", "spawnas", 1);} public client_putinserver(id){ g_iBullets[id] = 1; used[id] = false;} public spawnas(id){ used[id] = false;} public Forward_PlayerKilled(id) Task_StopSpin(id); public Clcmd_Revolver(id){ if (!is_user_alive(id)) return PLUGIN_HANDLED; if(used[id]) { PrintColor(id, "!g[!tRevolver!g] !yRevolveriu galima naudotis tik 1 karta per rounda."); return PLUGIN_HANDLED; } new szTitle[32], szBullets[64], szSpin[32], szShoot[32], szString1[32], szString2[32], szString3[32]; formatex(szTitle, charsmax(szTitle), "%L", LANG_SERVER, "REVOLVER"); new Menu = menu_create(szTitle, "_Revolver"); new Callback = menu_makecallback("Menu_Callback"); if (g_bShoot[id] || g_bSpinning[id]) formatex(szBullets, charsmax(szBullets), "%L", LANG_SERVER, "BULLETS_DISABLED", g_iBullets[id], g_WinRewards[g_iBullets[id]]); else formatex(szBullets, charsmax(szBullets), "%L", LANG_SERVER, "BULLETS_ENABLED", g_iBullets[id], g_WinRewards[g_iBullets[id]]); formatex(szSpin, charsmax(szSpin), "%L", LANG_SERVER, "SPIN", g_iBullets[id], g_WinRewards[g_iBullets[id]]); formatex(szShoot, charsmax(szShoot), "%L^n", LANG_SERVER, "SHOOT"); formatex(szString1, charsmax(szString1), " %sO %sO", g_iBulletPos[id] == 0 ? "\r" : "\y", g_iBulletPos[id] == 1 ? "\r" : "\y"); formatex(szString2, charsmax(szString2), "%sO %sO", g_iBulletPos[id] == 5 ? "\r" : "\y", g_iBulletPos[id] == 2 ? "\r" : "\y"); formatex(szString3, charsmax(szString3), " %sO %sO", g_iBulletPos[id] == 4 ? "\r" : "\y", g_iBulletPos[id] == 3 ? "\r" : "\y"); menu_additem(Menu, szBullets, "1", g_bShoot[id] || g_bSpinning[id] ? Callback : -1); menu_additem(Menu, szSpin, "2", g_bShoot[id] || g_bSpinning[id] || cs_get_user_money(id) + g_WinRewards[g_iBullets[id]] > 16000 ? Callback : -1); menu_additem(Menu, szShoot, "3", !g_bShoot[id] ? Callback : -1); menu_addtext(Menu, szString1, 0); menu_addtext(Menu, szString2, 0); menu_addtext(Menu, szString3, 0); new szExit[15]; formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT"); menu_setprop(Menu, MPROP_EXITNAME, szExit) menu_display(id, Menu, 0); return PLUGIN_HANDLED;} public _Revolver(id, Menu, Item){ if (!is_user_alive(id)) return PLUGIN_HANDLED; switch (Item) { case 0: { if (g_iBullets[id] < 5) g_iBullets[id]++; else g_iBullets[id] = 1; Clcmd_Revolver(id); } case 1: { set_task(0.1, "Task_SpinClip", id + TASKID_SPIN); set_task(6.5, "Task_StopSpin", id); g_bSpinning[id] = true; used[id] = false; } case 2: { if (DeadChance(g_iBullets[id])) { user_silentkill(id); client_cmd(id, "spk sound/weapons/357_shot1.wav"); PrintColor(id, "%L", LANG_SERVER, "LOSE"); used[id] = true; } else { cs_set_user_money(id, cs_get_user_money(id) + g_WinRewards[g_iBullets[id]]); client_cmd(id, "spk sound/weapons/357_cock1.wav"); PrintColor(id, "%L", LANG_SERVER, "WIN", g_WinRewards[g_iBullets[id]]); used[id] = true; } g_bShoot[id] = false; Task_StopSpin(id); } } return PLUGIN_HANDLED;} public Menu_Callback(id, Menu, Item) return ITEM_DISABLED; public Task_SpinClip(id){ id -= TASKID_SPIN; if (g_iBulletPos[id] < 5) { g_iBulletPos[id]++; } else { g_iBulletPos[id] = 0; g_fSpinSpeed[id] += 0.2; } Clcmd_Revolver(id); used[id] = false; client_cmd(id, "spk sound/weapons/357_reload1.wav"); set_task(g_fSpinSpeed[id], "Task_SpinClip", id + TASKID_SPIN);} public Task_StopSpin(id){ if (g_bSpinning[id]) { g_fSpinSpeed[id] = 0.0; g_bSpinning[id] = false; g_bShoot[id] = true; remove_task(id + TASKID_SPIN); }} public Task_Revolver_Ad() PrintColor(0, "%L", LANG_SERVER, "REVOLVER_AD"); stock PrintColor(const id, const input[], any:...){ new Count = 1, Players[32]; static Msg[191]; vformat(Msg, 190, input, 3); replace_all(Msg, 190, "!g", "^x04"); replace_all(Msg, 190, "!y", "^x01"); replace_all(Msg, 190, "!t", "^x03"); if (id) Players[0] = id; else get_players(Players, Count, "ch"); for (new i = 0; i < Count; i++) { if (is_user_connected(Players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, Players[i]); write_byte(Players[i]); write_string(Msg); message_end(); } }}