Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Nowy Plugin

Napisanie pluginu menu

Nowy Plugin

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 lichy993

    Życzliwy

  • Użytkownik

Reputacja: -2
Nowy

  • Postów:26
  • Lokalizacja:kamiensk
Offline

Napisano 05.03.2012 16:20

proszę o napisanie pluginu menu zeby kazdemu graczowi sie pokazywalo na poczatku rundy.

1.Marker MP5NAVY
2. Super marker p90 na flage t
3. Wez poprzednia bron.
4. Wez poprzednia bron + zamnij menu.


No i dodanie modelow postaci jakie sa w tamtym modzie.


Mam tutaj menu paintball moda ale ono sie strasznie buguje. To znaczy ze jest pare rund a potem sie nie pokazuje pozniej znowu pokazuje itd.... Ewentualnie moze uda wam sie to naprawic to nie nie piszcie nowego wolal bym to stare.

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#define PLUGIN "cs-popykaj.pl"
#define VERSION "5.8b"
#define AUTHOR "Rul4 - WhooKid"
#define TASK_DELAY 0.1 // The delay between model changing tasks
#define MODELSET_TASK 3000 // offset for the models task
#define MENU_TASK 3500
new onoff, cmodel, money, strip, death, protc, pbgun, pbnade, pbsnade, randomgun, maxplayers, vendetta, vendetta_cant;
new g_team_select[33], g_plyr_skin[33], g_has_kill[33];
new MenuState[33]
new ShowMenu[33]
new g_has_custom_model[33] // whether the player is using a custom model
new g_team[33]
new got_killed_by[33], vendetta_bonus[33], got_killed_times[33], in_vendetta[33]
new pbslauncher, got_slauncher;
new Float:g_models_counter // counter used to set task durations
#define FLAGA_SM ADMIN_LEVEL_F // Flaga t
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("rpaintballmod", VERSION, FCVAR_SERVER|FCVAR_UNLOGGED);
set_cvar_string("rpaintballmod", VERSION)
if (get_pcvar_num(onoff))
{

register_logevent("new_round", 2, "0=World triggered", "1=Round_Start");
register_event("ResetHUD", "ev_resethud", "be");
register_event("DeathMsg", "ev_death", "a")
register_event("Money", "ev_money", "be");
register_clcmd("say /respawn", "say_respawn", _, "<Respawns you if enabled>");
register_clcmd("say pbguns", "enableMenu")
register_clcmd("say /pbguns", "enableMenu")
register_forward(FM_GetGameDescription, "fw_gamedesc");
register_forward(FM_SetModel, "fw_setmodel", 1);
if (get_pcvar_num(cmodel))
{
register_forward(FM_ClientUserInfoChanged, "fw_clientuserinfochanged");
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
//register_message(get_user_msgid("ClCorpse"), "spawn_clcorpse")
//set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET);
}
maxplayers = get_maxplayers();

//initialize the menu
for (new a = 0; a < 33; a++)
{
ShowMenu[a] = 1;
in_vendetta[a] = 0
got_killed_by[a] = -1
got_killed_times[a] = 0
}
//load the config
new file[64]
get_configsdir(file, 63)
format(file, 63, "%s/rpaintball.cfg", file)

if(file_exists(file))
server_cmd("exec %s", file)
}
}
public plugin_precache()
{
onoff = register_cvar("amx_pbmod", "1");
pbgun = register_cvar("amx_pbgun", "1");
pbnade = register_cvar("amx_pbnade", "1");
pbsnade = register_cvar("amx_pbsnade", "1");
if (get_pcvar_num(onoff)){
cmodel = register_cvar("amx_pbmodel", "1");
money = register_cvar("amx_pbmoney", "1");
strip = register_cvar("amx_pbstrip", "1");
death = register_cvar("amx_pbdm", "0");
protc = register_cvar("amx_pbspawnprotect", "5");
randomgun = register_cvar("pbgun_selectmode", "1");
vendetta = register_cvar("pbgun_vendetta_enabled", "1");
vendetta_cant = register_cvar("pbgun_vendetta_cant", "0");
pbslauncher = register_cvar("pbgun_pbslauncher", "1");

if (get_pcvar_num(cmodel))
precache_model("models/player/paintballer/paintballer.mdl");
}
}
public fw_gamedesc()
{
if (get_pcvar_num(onoff))
{
forward_return(FMV_STRING, PLUGIN);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public new_round()
{
if (get_pcvar_num(onoff) && get_pcvar_num(strip))
{
new ent;
while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "armoury_entity")) != 0)
engfunc(EngFunc_RemoveEntity, ent);

}
// Reset the models task counter
g_models_counter = 0.0

select_new_slauncher()

}
public select_new_slauncher()
{

new original = got_slauncher

got_slauncher++

while((!is_user_connected(got_slauncher) && !is_user_bot(got_slauncher) && got_slauncher != original))
{
got_slauncher++
if (got_slauncher > 32)
got_slauncher = 0
}

//client_print(0, print_chat, "%d got it", got_slauncher)

}
public ev_resethud(id)
{
if (get_pcvar_num(onoff))
{
if (!task_exists(id))
set_task(0.3, "player_spawn", id);
}
}
public player_spawn(id)
if (is_user_alive(id))
{
if (get_pcvar_num(protc))
{
set_pev(id, pev_takedamage, DAMAGE_NO);
set_task(float(get_pcvar_num(protc)), "player_godmodeoff", id+100);
}
if (get_pcvar_num(strip)) //&& !user_has_mp5(id))
{
if (pev(id, pev_weapons) & (1 << CSW_C4))
engclient_cmd(id, "drop", "weapon_c4")
fm_strip_user_weapons(id);
}
if (get_pcvar_num(money))
{
message_begin(MSG_ONE_UNRELIABLE, 94, _, id);
write_byte(1 << 5);
message_end();
}
if (get_pcvar_num(cmodel))
{
set_task(0.1 + g_models_counter, "task_set_model", id+MODELSET_TASK)
g_models_counter += TASK_DELAY
}
remove_task(id);
set_task(random_float(0.9, 1.3), "player_weapons", id);
set_task(2.0, "clear_moneyhud", id + 300);

}
public client_command(id)
if (get_pcvar_num(cmodel))
{
new command[10], speech[2];
read_argv(0, command, 9);
read_argv(1, speech, 1);
if (containi(command, "join") != -1)
if (equali(command, "jointeam"))
g_team_select[id] = str_to_num(speech);
else if (equali(command, "joinclass"))
g_plyr_skin[id] = (g_team_select[id] == 1) ? str_to_num(speech) - 1: str_to_num(speech) + 3;
}
public player_weapons(id)
if (is_user_alive(id))
{

menu_cancel(id)

if(in_vendetta[id])
{
new kname[32]; get_user_name(got_killed_by[id],kname,31);


}

set_pdata_int(id, 386, 120, 5);
fm_give_item(id, "weapon_knife");
if (get_user_team(id) == 1)
fm_give_item(id, "weapon_glock18");
else
{
set_pdata_int(id, 382, 48, 5);
fm_give_item(id, "weapon_usp");
}
if (get_pcvar_num(pbgun) && !vendetta_bonus[id]){
if (get_pcvar_num(randomgun)==1){
if(is_user_bot(id))
{
ShowMenu[id] = false;
MenuState[id] = random(4);
}

if (ShowMenu[id])
launchMenu(id);
else
{
give_menu_weapon(id, MenuState[id]);
client_print(id, print_chat, "[RPaintballMod] Twoje menu jest zamkniete. Wpisz na say /pbguns aby je wznowic.")
}
}
else
{
new choose;
if (get_pcvar_num(randomgun)==2){
choose = random(4);

if (random(20)==0){
fm_give_item(id, "weapon_p90");
cs_set_user_bpammo(id, CSW_P90, 300);


}
else
switch (choose)
{
case 0: fm_give_item(id, "weapon_mp5navy");
case 1: fm_give_item(id, "weapon_scout");
case 2: fm_give_item(id, "weapon_m3");
case 3: fm_give_item(id, "weapon_xm1014");
default: fm_give_item(id, "weapon_mp5navy");
}
cs_set_user_bpammo(id, CSW_MP5NAVY, 150);
cs_set_user_bpammo(id, CSW_SCOUT, 20);
cs_set_user_bpammo(id, CSW_M3, 16);
cs_set_user_bpammo(id, CSW_XM1014, 80);
cs_set_user_bpammo(id, CSW_P90, 300);
}else
{
//always gets a marker
fm_give_item(id, "weapon_mp5navy");
cs_set_user_bpammo(id, CSW_MP5NAVY, 150);

//did not kill someone, has a chance of getting a shotgun
choose = random(3);
if (!g_has_kill[id] && !choose){
fm_give_item(id, "weapon_xm1014");
cs_set_user_bpammo(id, CSW_XM1014, 80);
}

//killed 2 or more, gets a sniper or a launcher
choose = random(2);
if (g_has_kill[id]>2)
if (g_has_kill[id]>4){
fm_give_item(id, "weapon_p90");
cs_set_user_bpammo(id, CSW_P90, 300);


}
else
if (choose){
fm_give_item(id, "weapon_scout");
cs_set_user_bpammo(id, CSW_SCOUT, 20);
}else {
fm_give_item(id, "weapon_m3");
cs_set_user_bpammo(id, CSW_M3, 16);
}
g_has_kill[id] = 0;
}
}
}


if (get_pcvar_num(pbnade))
fm_give_item(id, "weapon_hegrenade");

if (get_pcvar_num(pbsnade))
fm_give_item(id, "weapon_smokegrenade");
if (get_pcvar_num(pbslauncher) && id == got_slauncher)
{
new kname[32]; get_user_name(id,kname,31);
fm_give_item(id, "weapon_hegranade");
//fm_give_item(id, "weapon_hegranade");

if (get_pcvar_num(death))
select_new_slauncher()

}

remove_task(id);
}
public clear_moneyhud(id)
if (get_pcvar_num(money))
{
message_begin(MSG_ONE_UNRELIABLE, 94, _, id - 300); //HideWeapon
write_byte(1 << 5);
message_end();
}
public ev_death()
{
new killer = read_data(1);
new victim = read_data(2);

g_has_kill[killer] += 1;
if (get_pcvar_num(death))
{
new id = victim + 200;
set_task(3.0, "player_spawner", id);
set_task(3.2, "player_spawner", id);
}
if (get_pcvar_num(vendetta) && killer != victim)
{
vendetta_bonus[victim] = 0

if (got_killed_by[victim] == killer)
{
got_killed_times[victim] += 1;
}
else
{
got_killed_by[victim] = killer;
got_killed_times[victim] = 1;
}

if (got_killed_times[victim] < get_pcvar_num(vendetta_cant))
in_vendetta[victim] = 0;
else
in_vendetta[victim] = 1;
if (got_killed_by[killer] == victim)
if (in_vendetta[killer])
{
in_vendetta[killer] = 0
vendetta_bonus[killer] = 1
vendetta_bonus[victim] = -1
got_killed_times[killer] = 0
got_killed_by[killer] = -1

new kname[32]; get_user_name(killer,kname,31);



}
else
got_killed_times[killer] = 0

}
}
public ev_money(id)
if (get_pcvar_num(money))
if (get_pdata_int(id, 115, 5) > 0)
set_pdata_int(id, 115, 0, 5);
public say_respawn(id)
if (get_pcvar_num(death))
if (!is_user_alive(id))
if (get_user_team(id) == 1 || get_user_team(id) == 2)
{
set_task(1.5, "player_spawner", id + 200);
set_task(1.7, "player_spawner", id + 200);
}
public player_godmodeoff(id)
set_pev(id-100, pev_takedamage, DAMAGE_AIM);
public player_spawner(id)
if (is_user_connected(id - 200))
if (get_user_team(id - 200) == 1 || get_user_team(id - 200) == 2)
dllfunc(DLLFunc_Spawn, id - 200);
stock user_has_mp5(id)
{
new weapons[32], num;
get_user_weapons(id, weapons, num);
for (new i = 0; i < num; i++)
if (weapons[i] == CSW_MP5NAVY)
return 1;
return 0;
}
public fw_setmodel(ent, model[])
{
if (get_pcvar_num(death) && pev_valid(ent))
{
new id = pev(ent, pev_owner);
if ((!is_user_alive(id) || task_exists(id + 200)) && equali(model, "models/w_", 9) && !equali(model, "models/w_weaponbox.mdl"))
{
new classname[16];
pev(ent, pev_classname, classname, 15);
if (equal(classname, "weaponbox") && !equal(model, "models/w_backpack.mdl"))
for (new i = maxplayers + 1; i < engfunc(EngFunc_NumberOfEntities) + 5; i++)
if (pev_valid(i))
if (ent == pev(i, pev_owner))
{
dllfunc(DLLFunc_Think, ent);

return FMRES_IGNORED;
}
}
}
return FMRES_IGNORED;
}
public fw_clientuserinfochanged(id, infobuffer)
{

// return (get_pcvar_num(cmodel) && pev(id, pev_deadflag) == DEAD_NO) ? FMRES_SUPERCEDE : FMRES_IGNORED;

if (get_pcvar_num(cmodel) && (g_has_custom_model[id]))
{
if (g_team[id] != get_user_team(id))
g_has_custom_model[id] = 0;

// Get current model
static currentmodel[32]

engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", currentmodel, 31)

// Check whether it matches the custom model - if not, set it again
if (!equal(currentmodel, "paintballer") || g_has_custom_model[id] == 0)
{
set_task(0.1 + g_models_counter, "task_set_model", id+MODELSET_TASK)
g_models_counter += TASK_DELAY
}

return FMRES_SUPERCEDE;
}
return FMRES_IGNORED
}
public fw_SetClientKeyValue(id, const infobuffer[], const key[])
{
// Block CS model changes
if (g_has_custom_model[id] && equal(key, "model"))
return FMRES_SUPERCEDE;

return FMRES_IGNORED;
}
////////*****************VEN STOCKS START*****************////////
stock fm_strip_user_weapons(index)
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"));
if (!pev_valid(ent))
return 0;
dllfunc(DLLFunc_Spawn, ent);
dllfunc(DLLFunc_Use, ent, index);
engfunc(EngFunc_RemoveEntity, ent);
return 1;
}
stock fm_give_item(index, const item[])
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item));
if (!pev_valid(ent))
return 0;
new Float:origin[3];
pev(index, pev_origin, origin);
engfunc(EngFunc_SetOrigin, ent, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);
new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
////////*****************VEN STOCKS END*****************////////
public enableMenu(id)
{
ShowMenu[id] = 1
client_print(id, print_chat, "[PaintballMod] Twoje menu zostalo wznowione.")
return PLUGIN_HANDLED
}
public launchMenu(id)
{
new menu = menu_create("Menu:", "menu_handler")

menu_additem(menu, "Marker", "0", 0)
menu_additem(menu, "SuperMarker(VIP)", "1", 0, menu_makecallback("launchMenu_c"))
menu_additem(menu, "Ostatnio brana bron", "4", 0, -1)
menu_additem(menu, "Ostatnia bron + nie pokazuje menu", "5", 0, -1)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

menu_display(id, menu, 0)

}
public launchMenu_c(id) {
if(!(get_user_flags(id) & FLAGA_SM))
return ITEM_DISABLED;

return ITEM_ENABLED;
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data);

if (key==4)
key = MenuState[id]
if(key == 5)
{
ShowMenu[id] = 0;
client_print(id, print_chat, "[RPaintballMod] Nie masz broni wpisz /pbguns!! Ponownie wybierz bron.")
key = MenuState[id]
}

MenuState[id] = key
give_menu_weapon(id, MenuState[id]);

menu_destroy(menu)
return PLUGIN_HANDLED
}
public give_menu_weapon(id,key)
{
switch (key)
{
case 0: fm_give_item(id, "weapon_mp5navy");
case 1: fm_give_item(id, "weapon_p90");
default: fm_give_item(id, "weapon_mp5navy");
}

cs_set_user_bpammo(id, CSW_MP5NAVY, 150);
cs_set_user_bpammo(id, CSW_P90, 254);
}
public task_set_model(id)
{
remove_task(id)

// Get player id
id -= MODELSET_TASK

// Actually set the player's model
set_user_model(id, "paintballer")
}
public set_user_model(player, const modelname[])
{
// Set new model
engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)

g_team[player] = get_user_team(player)
//if (!g_has_custom_model[player])
if (g_team[player] == 1)
{
g_plyr_skin[player] = 0//random(4);
}
else
{
g_plyr_skin[player] = 4 // + random(4);
}

set_pev(player, pev_skin, g_plyr_skin[player]);

g_has_custom_model[player] = 1
}
public spawn_clcorpse()
{
// Get player id
static id
id = get_msg_arg_int(12)

new entCorpse = read_data(2);
set_pev(entCorpse, pev_skin, g_plyr_skin[id]);


// Check if the player is using a custom player model
if (false && g_has_custom_model[id])
{
//client_print(0, print_chat, "spawning corpse for %d", id);
set_msg_arg_string(1, "")

new entCorpse = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if(entCorpse > 0)
{
new Float:modelOrigin[3], Float:modelAngle[3]
pev(id, pev_origin, modelOrigin)
pev(id, pev_angles, modelAngle)
client_print(0, print_chat, "corpse coords %f %f %f", float(get_msg_arg_int(2)), float(get_msg_arg_int(3)), float(get_msg_arg_int(4)));
client_print(0, print_chat, "corpse coords %i %i %i", get_msg_arg_int(2), get_msg_arg_int(3), get_msg_arg_int(4));
//client_print(0, print_chat, "corpse string %f %f %f", float(get_msg_arg_string(2)), float(get_msg_arg_string(3)), float(get_msg_arg_string(4)));
client_print(0, print_chat, "player coords %f %f %f", modelOrigin[0], modelOrigin[1], modelOrigin[2]);
// client_print(0, print_chat, "player %f %f %f", modelAngle[0], modelAngle[1], modelAngle[2]);

modelAngle[0] += 90.0

modelOrigin[2] -= 35.0

set_pev(entCorpse, pev_owner, id)
set_pev(entCorpse, pev_classname, "clcorpse")
engfunc(EngFunc_SetSize, entCorpse, Float:{-6.0,-12.0,-6.0},Float:{6.0,12.0,6.0})
engfunc(EngFunc_SetModel, entCorpse, "models/player/paintballer/paintballer.mdl");
set_pev(entCorpse, pev_skin, g_plyr_skin[id]);
set_pev(entCorpse, pev_solid, SOLID_NOT)
set_pev(entCorpse, pev_movetype, MOVETYPE_TOSS)
set_pev(entCorpse, pev_sequence, 103)
set_pev(entCorpse, pev_origin, modelOrigin)
set_pev(entCorpse, pev_angles, modelAngle)
set_pev(entCorpse, pev_v_angle, pev(id, pev_v_angle))
set_pev(entCorpse, pev_nextthink, 1.0)

}
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}




Bardzo bym byl wdzieczny bo mecze sie z tym od 2 tygodni. Trace ludzi na serwie bo to menu sie buguje.

Chyba nie w tym dziale napisalem. Przeniescie do Pluginy.
sebul (05.03.2012 18:52):
Kod powyżej 200 linijek dodawaj w załączniku lub na wklejce.

  • +
  • -
  • -1
Dołączona grafika

Zapraszam:)

#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 05.03.2012 18:53

Automatyczna wiadomość


Ten temat został przeniesiony z forum:
Scripting AMXX > Problemy
do
Scripting AMXX > Pluginy


  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo






Również z jednym lub większą ilością słów kluczowych: Nowy Plugin

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych