Witam
Chodzi tu o plugin automaticknifeduel.amxx (sma)
A czy da się tak zrobić żeby jak jeden potrze o ścianę to odegra się jakiś wav (np. wyzwanie.wav) i ten drugi wybierze 1 czyli tak to też odegra się wav (np. chocdomnie.wav) lub jak wybierze 2 opcję to też odegra się wav (np. cykor.wav)?
Chciałem zrobić coś takiego:
Koleś pociera nożem o ścianę i wyzywa innego na pojedynek. Rozlega się dzwięk "I feel no pain" (z Zohana).
Potem koleś ma do wyboru 1.Tak lub 2.Nie. Gdy wybiera tak to rozlega się dzwięk "No no no no no no I feel no pain" (Phantom).
Jak wybiera 2 to dzwięk kurczaka
Dżwięki mam odpowiednio spreparowane (wav, 22h i mono).
Tylko nie wiem jak i gdzie wklejić "spk misc/knifeduel/wyzwanie.wav" i nie wiem czy tak to ma wyglądać
Proszę o przerobienie a nie o pisanie nowego pluginu jeśli to tak zabrzmiało
Czekam na szybką odpowiedz
i Pozdrawiam
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Automaticknifeduel z dzwiękiem :)
Temat rozp.
Zigu007
, 04.11.2008 18:14
2 odpowiedzi w tym temacie
#1
Napisano 04.11.2008 18:14
#2
Napisano 04.11.2008 18:26
Nie testowane, ale powinno śmigać:
#define PLUGINNAME "Automatic knife duel" #define VERSION "0.3" #define AUTHOR "JGHG" /* Copyleft 2005 Plugin topic: http://www.amxmodx.org/forums/viewtopic.php?p=91239 AUTOMATIC KNIFE DUEL ==================== Where I come from, if you cut the wall repeteadly with your knife it means you're challenging your last opponent to a knife duel. ;-) I decided to automate this process. If only you and another person on the opposite team remain in the round, you can hit a wall (or another object) with your knife, THREE TIMES in fast succession. By this action you challenge your opponent to a knife duel. The person you challenge gets a menu where he can accept/decline your challenge. The challenged person has 10 seconds to decide his mind, else the challenge is automatically declined, and the menu should be closed automatically. Should a knife duel start, it works out pretty much like a round of Knife Arena: you can only use the knife (and the C4!). As soon as the round ends the Knife Arena mode is turned off. /JGHG //pobrano z cs-puchatek.pl VERSIONS ======== 050421 0.3 You must now slash with your knife three times in fast succession to challenge someone. 050208 0.2 Fixed seconds display. Bots should now respond correctly and a little human like. They will mostly accept challenges. ;-) Small fixes here and there. <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.gif' class='bbc_emoticon' alt=':-)' /> 050208 0.1 First version - largely untested */ #include <amxmodx> #include <fakemeta> #include <fun> #define DEBUG #if defined DEBUG #include <amxmisc> #endif // defined DEBUG #define MENUSELECT1 0 #define MENUSELECT2 1 #define TASKID_CHALLENGING 2348923 #define TASKID_BOTTHINK 3242321 #define DECIDESECONDS 10 #define ALLOWED_WEAPONS 2 #define KNIFESLASHES 3 // the nr of slashes within a short amount of time until a challenge starts... // Globals below new g_allowedWeapons[ALLOWED_WEAPONS] = {CSW_KNIFE, CSW_C4} new g_MAXPLAYERS new bool:g_challenging = false new bool:g_knifeArena = false new bool:g_noChallengingForAWhile = false new g_challengemenu new g_challenger new g_challenged new g_challenges[33] // Globals above public plugin_modules() { require_module("fakemeta") require_module("fun") } public forward_emitsound(const PIRATE, const Onceuponatimetherewasaverysmall, noise[], const Float:turtlewhoateabiggerturtleand, const Float:afterthatthesmallturtlegot, const veryveryverybig, const theend) { if (g_noChallengingForAWhile || g_knifeArena || g_challenging || PIRATE < 1 || PIRATE > g_MAXPLAYERS || !is_user_alive(PIRATE) || !equal(noise, "weapons/knife_hitwall1.wav")) return FMRES_IGNORED new team = get_user_team(PIRATE), otherteam = 0, matchingOpponent = 0 // Make sure exactly one person on each team is alive. for (new i = 1; i <= g_MAXPLAYERS; i++) { if (!is_user_connected(i) || !is_user_alive(i) || PIRATE == i) continue if (get_user_team(i) == team) { // No fun. return FMRES_IGNORED } else { if (++otherteam > 1) { // No fun. return FMRES_IGNORED } matchingOpponent = i } } if (matchingOpponent == 0) return FMRES_IGNORED if (++g_challenges[PIRATE] >= KNIFESLASHES) { Challenge(PIRATE, matchingOpponent) if (is_user_bot(matchingOpponent)) { new Float:val = float(DECIDESECONDS) if (val < 2.0) val = 2.0 remove_task(TASKID_BOTTHINK) set_task(random_float(1.0, float(DECIDESECONDS) - 1.0), "BotDecides", TASKID_BOTTHINK) } g_challenges[PIRATE] = 0 } else set_task(1.0, "decreaseChallenges", PIRATE) //client_print(PIRATE, print_chat, "Your challenges: %d", g_challenges[PIRATE]) return FMRES_IGNORED } public decreaseChallenges(id) { if (--g_challenges[id] < 0) g_challenges[id] = 0 } public BotDecides() { if (!g_challenging) return if (random_num(0,9) > 0) Accept() else { DeclineMsg() } g_challenging = false remove_task(TASKID_CHALLENGING) } Challenge(challenger, challenged) { g_challenger = challenger g_challenged = challenged g_challenging = true new challenger_name[32], challenged_name[32] get_user_name(challenger, challenger_name, 31) get_user_name(challenged, challenged_name, 31) client_print(challenger, print_chat, "Wyzwales %s na pojedynek nozowy! Oczekiwanie na odpowiedz %d sekund...", challenged_name, DECIDESECONDS) client_cmd (0, "spk misc/knifeduel/wyzwanie.wav") new menu[1024], keys = MENU_KEY_1 | MENU_KEY_2 format(menu, 1023, "%s wyzwal Cie na pojedynek nozowy!^n^nZgadzasz sie? Masz %d sekund na odpowiedz!^n^ny1w. Dawac go tutaj!^ny2w. Nie, boje sie :(", challenger_name, DECIDESECONDS) show_menu(challenged, keys, menu, DECIDESECONDS, "JGHG's automatic knife duel") set_task(float(DECIDESECONDS), "timed_toolate", TASKID_CHALLENGING) } public timed_toolate() { if (g_challenging) { new challenger_name[32], challenged_name[32] get_user_name(g_challenger, challenger_name, 31) get_user_name(g_challenged, challenged_name, 31) client_print(0, print_chat, "%s nie odpowiedzial %s na jego wyzwanie...", challenged_name, challenger_name) CancelAll() } } public client_putinserver(id) { set_task(25.0, "Announcement", id) return PLUGIN_CONTINUE } public Announcement(id) { client_print(id, print_chat, "Kiedy jestes tylko Ty i Twoj przeciwnik, mozesz go wyzwac na pojedynek nozowy pocierajac nozem o sciane.") } public challenged_menu(id, key) { switch (key) { case MENUSELECT1: { // Accept Accept() } case MENUSELECT2: { // Decline DeclineMsg() } } g_challenging = false remove_task(TASKID_CHALLENGING) return PLUGIN_HANDLED } DeclineMsg() { new challenger_name[32], challenged_name[32] get_user_name(g_challenger, challenger_name, 31) get_user_name(g_challenged, challenged_name, 31) client_print(0, print_chat, "%s nie zgodzil sie na wyzwanie %s...", challenged_name, challenger_name) client_cmd (0, "spk misc/knifeduel/cykor.wav") } Accept() { new challenger_name[32], challenged_name[32] get_user_name(g_challenger, challenger_name, 31) get_user_name(g_challenged, challenged_name, 31) client_print(0, print_chat, "%s zgodzil sie na wyzwanie %s!", challenged_name, challenger_name) g_knifeArena = true give_item(g_challenger, "weapon_knife") give_item(g_challenged, "weapon_knife") engclient_cmd(g_challenger, "weapon_knife") engclient_cmd(g_challenged, "weapon_knife") client_cmd (0, "spk misc/knifeduel/ chocdomnie.wav") } public event_holdwpn(id) { if (!g_knifeArena || !is_user_alive(id)) return PLUGIN_CONTINUE new weaponType = read_data(2) for (new i = 0; i < ALLOWED_WEAPONS; i++) { if (weaponType == g_allowedWeapons[i]) return PLUGIN_CONTINUE } engclient_cmd(id, "weapon_knife") return PLUGIN_CONTINUE } public event_roundend() { if (g_challenging || g_knifeArena) CancelAll() g_noChallengingForAWhile = true set_task(4.0, "NoChallengingForAWhileToFalse") return PLUGIN_CONTINUE } public NoChallengingForAWhileToFalse() { g_noChallengingForAWhile = false } CancelAll() { if (g_challenging) { g_challenging = false // Close menu of challenged if (is_user_connected(g_challenged)) { new usermenu, userkeys get_user_menu(g_challenged, usermenu, userkeys) // get user menu // Hmm this ain't working :-/ if (usermenu == g_challengemenu) // Close it! show_menu(g_challenged, 0, "blabla") // show empty menu } } if (g_knifeArena) { g_knifeArena = false } remove_task(TASKID_BOTTHINK) remove_task(TASKID_CHALLENGING) } public event_death() { if (g_challenging || g_knifeArena) CancelAll() return PLUGIN_CONTINUE } #if defined DEBUG public challengefn(id, level, cid) { if (!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED new challenger[64], challenged[64] read_argv(1, challenger, 63) read_argv(2, challenged, 63) console_print(id, "challenger: %s, challenged: %s", challenger, challenged) new r = str_to_num(challenger) new d = str_to_num(challenged) Challenge(r, d) if (is_user_bot(d)) Accept() return PLUGIN_HANDLED } #endif // defined DEBUG public plugin_init() { register_plugin(PLUGINNAME, VERSION, AUTHOR) register_event("CurWeapon", "event_holdwpn", "be", "1=1") register_forward(FM_EmitSound, "forward_emitsound") g_MAXPLAYERS = get_maxplayers() g_challengemenu = register_menuid("JGHG's automatic knife duel"/*"You are challenged"*/) register_menucmd(g_challengemenu, MENU_KEY_1 | MENU_KEY_2, "challenged_menu") register_event("DeathMsg", "event_death", "a") register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_terwin") register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_ctwin") register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_rounddraw") #if defined DEBUG register_clcmd("0challenge", "challengefn", ADMIN_CFG, "<challenger> <challenged> - start knife duel challenge") #endif // defined DEBUG new Float:maptime = get_cvar_float("mp_timelimit") if (maptime == 0.0) maptime = 15.0 new Float:anntime = 60.0 * 5.0 // 5 minutes if (maptime < 5.0) anntime = maptime / 3.0 set_task(anntime, "Announcement", 0, "", 0, "b") } public plugin_precache () { precache_sound("misc/knifeduel/wyzwanie.wav") precache_sound("misc/knifeduel/chocdomnie.wav") precache_sound("misc/knifeduel/cykor.wav") }
#3
Napisano 04.11.2008 18:36
Też wstawiałem to
THX :okok:
client_cmd (0, "spk misc/knifeduel/DZWIĘKale w złych miejscach
THX :okok:
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych