Gl0ckee писал(а): Мне нужен код для плагина что бы что-то было по очереди. спасибо
Модераторы: Subb98, liFe iS GoOD
new bool:VIP_Weapon[32], bool:VIP_HeGrenade[32], bool:VIP_SmokeGrenade[32], bool:VIP_Flashbang[32], bool:VIP_Defuse[32], bool:VIP_Armor[32], bool:VIP_NightVision[32]
...
public plugin_natives()
{
register_native("get_dmspawns", "native_get_dmspawns")
...
register_native("create_item", "native_create_item")
...
}
public native_get_dmspawns()
{
new Float:xorigs[MAX_DMSPAWNS]
new Float:yorigs[MAX_DMSPAWNS]
new Float:zorigs[MAX_DMSPAWNS]
for (new i = 0; i < dm_spawnsnum; i++)
{
xorigs[i] = dm_spawns[i][0]
yorigs[i] = dm_spawns[i][1]
zorigs[i] = dm_spawns[i][2]
}
set_array_f(1, xorigs, dm_spawnsnum)
set_array_f(2, yorigs, dm_spawnsnum)
set_array_f(3, zorigs, dm_spawnsnum)
set_array_f(4, dm_angles, dm_spawnsnum)
return dm_spawnsnum
}
public native_create_item()
{
new type[24], Float:orig[3], Float:angle, entid
get_string(1,type, 23)
get_array_f(2, orig, 3)
angle = get_param_f(3)
entid = get_param(4)
entid = create_spawn(type, orig, angle, entid)
return entid
}
...
native create_item(type[], Float:origin[3], Float:angle, entid = 0)
...
// возвращает число DM-спаунов игроков и координаты с углом каждого спауна
native get_dmspawns(Float:xorigs[], Float:yorigs[], Float:zorigs[], Float:angls[])
native get_array(param, dest[], size);
native set_array(param, const source[], size);
native Native_VIPBonus(VIP_Weapon[], bool:VIP_HeGrenade[], bool:VIP_SmokeGrenade[], VIP_Flashbang[], bool:VIP_Defuse[], bool:VIP_Armor[], bool:VIP_NightVision[]);
public GiveItems(id, VIP_Weapon[]) {
switch(Native_VIPBonus(VIP_Weapon[id]) {
case 0: {
if(!user_has_weapon(id, CSW_DEAGLE)) {
give_item(id, "weapon_deagle")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
}
}
case 1: {
give_item(id, "ammo_50ae")
}
case 2: {
give_item(id, "ammo_50ae")
}
case 3: {
give_item(id, "ammo_50ae")
}
case 4: {
give_item(id, "ammo_50ae")
}
case 5: {
give_item(id, "ammo_50ae")
}
case 6: {
give_item(id, "ammo_50ae")
}
case 7: {
}
}
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
fm_strip_user_gun(id, CSW_GLOCK18)
fm_strip_user_gun(id, CSW_USP)
fm_strip_user_gun(id, CSW_P228)
fm_strip_user_gun(id, CSW_ELITE)
fm_strip_user_gun(id, CSW_FIVESEVEN)
return
}
Sheigar писал(а):Что я делаю не правильно? Не понимаю. Пробовал по разному реализовать, но не получилось...
- Код: Выделить всё
native Native_VIPBonus(VIP_Weapon[], bool:VIP_HeGrenade[], bool:VIP_SmokeGrenade[], VIP_Flashbang[], bool:VIP_Defuse[], bool:VIP_Armor[], bool:VIP_NightVision[]);
- Код: Выделить всё
public GiveItems(id, VIP_Weapon[]) {
switch(Native_VIPBonus(VIP_Weapon[id]) {
case 0: {
if(!user_has_weapon(id, CSW_DEAGLE)) {
give_item(id, "weapon_deagle")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
}
}
case 1: {
give_item(id, "ammo_50ae")
}
case 2: {
give_item(id, "ammo_50ae")
}
case 3: {
give_item(id, "ammo_50ae")
}
case 4: {
give_item(id, "ammo_50ae")
}
case 5: {
give_item(id, "ammo_50ae")
}
case 6: {
give_item(id, "ammo_50ae")
}
case 7: {
}
}
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
fm_strip_user_gun(id, CSW_GLOCK18)
fm_strip_user_gun(id, CSW_USP)
fm_strip_user_gun(id, CSW_P228)
fm_strip_user_gun(id, CSW_ELITE)
fm_strip_user_gun(id, CSW_FIVESEVEN)
return
}
Параметром нативной функции у тебя является МАССИВ (в определении натива), а не значение, выбранное из него, как у тебя реализовано в плагине!
Если по сути тебе на стороне второго плагина нужно лишь получать значение из массива, то вообще незачем городить огород, передавай в нативе только id, а выборку из массива делай в главном плагине. Тогда и возврат результата можно делать через return.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <native>
new const Menu_Keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
new bool:VIP_Weapon[32], bool:VIP_HeGrenade[32], bool:VIP_SmokeGrenade[32], bool:VIP_Flashbang[32], bool:VIP_Defuse[32], bool:VIP_Armor[32], bool:VIP_NightVision[32]
new const Message[][] = {
/*0*/ "\yМеню настроек привилегий \w«Newholl» \y(1/2)^n^n",
/*1*/ "\y1. \r(Deagle) \wВыдача пистолета.^n",
/*2*/ "\y1. \r(Usp) \wВыдача пистолета.^n",
/*3*/ "\y1. \r(Glock) \wВыдача пистолета.^n",
/*4*/ "\y1. \r(P228) \wВыдача пистолета.^n",
/*5*/ "\y1. \r(FiveSeven) \wВыдача пистолета.^n",
/*6*/ "\y1. \r(M9Elite) \wВыдача пистолета.^n",
/*2*/ "\y2. \r(On) \wВыдача брони.^n",
/*3*/ "\y3. \r(On) \wВыдача щипцов.^n",
/*4*/ "\y4. \r(On) \wВыдача ночного зрения^n",
/*5*/ "\y5. \r(On) \wВыдача взрывной гранаты.^n",
/*6*/ "\y6. \r(On) \wВыдача дымовой гранаты.^n",
/*7*/ "\y7. \r(2/2) \wВыдача слеповой гранаты.^n",
/*8*/ "\y8. \r(Отключить) \yВсе бонусы.^n",
/*9*/ "\y9. \yДальше...^n",
/*10*/ "\y0. \yВыход.^n"
}
public plugin_init() {
register_plugin("Menu_SettingsPrivilleges", "1.0", "Sheigar")
register_menu("Menu_SettingsPrivilleges", Menu_Keys, "Func_Menu_SettingsPriv_Handler")
register_clcmd("SetPrivMenu", "Func_Menu_SettingsPrivilleges")
register_clcmd("say /SetPrivMenu", "Func_Menu_SettingsPrivilleges")
}
public plugin_natives() register_native("Native_VIPBonus", "Func_VIPBonus")
public Func_VIPBonus() {
}
public Func_Menu_SettingsPrivilleges(id) {
if(!is_user_connected(id) && !is_user_admin(id)) return
new Menu[650], Len
Len = formatex(Menu[Len], charsmax(Menu) - Len, Message[0])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[VIP_Weapon[id] == 0 ? 1:VIP_Weapon[id] == 1 ? 2:VIP_Weapon[id] == 2 ? 3:VIP_Weapon[id] == 3 ? 4:VIP_Weapon[id] == 4 ? 5:6])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[2])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[3])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[4])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[5])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[6])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[7])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[8])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[9])
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[10])
show_menu(id, Menu_Keys, Menu, -1, "Menu")
}
public Func_Menu_SettingsPriv_Handler(id, Menu_Keys) {
if(!is_user_connected(id)) return
switch(Menu_Keys) {
case 0: client_cmd(id, "")
case 1: client_cmd(id, "")
case 2: client_cmd(id, "")
case 3: client_cmd(id, "")
case 4: client_cmd(id, "")
case 5: client_cmd(id, "")
case 6: client_cmd(id, "")
case 7: client_cmd(id, "")
case 8: client_cmd(id, "")
}
if(Menu_Keys < 8) set_task(0.1, "Func_Menu_SettingsPrivilleges", id)
}
#include <amxmodx>
#include <cstrike>
#include <fakemeta_util>
#include <fun>
#include <native>
new Round
public plugin_init() {
register_plugin("VipBonus", "1.0", "Sheigar")
register_event("ResetHUD", "ResetHUD", "be")
register_event("HLTV", "StartRound", "a", "1=0", "2=0")
register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in","2=#Game_Commencing")
}
public RestartRound() Round = 0
public StartRound() Round ++
public ResetHUD(id) {
if(is_user_connected(id) && get_user_flags(id) & ADMIN_MENU && Round >= 4)
set_task(0.5, "GiveItems", 0)
return 1
}
public GiveItems(id, VIP_Weapon[]) {
switch(Native_VIPBonus(VIP_Weapon[id]) {
case 0: {
if(!user_has_weapon(id, CSW_DEAGLE)) {
give_item(id, "weapon_deagle")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
}
}
case 1: {
give_item(id, "ammo_50ae")
}
case 2: {
give_item(id, "ammo_50ae")
}
case 3: {
give_item(id, "ammo_50ae")
}
case 4: {
give_item(id, "ammo_50ae")
}
case 5: {
give_item(id, "ammo_50ae")
}
case 6: {
give_item(id, "ammo_50ae")
}
case 7: {
}
}
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
fm_strip_user_gun(id, CSW_GLOCK18)
fm_strip_user_gun(id, CSW_USP)
fm_strip_user_gun(id, CSW_P228)
fm_strip_user_gun(id, CSW_ELITE)
fm_strip_user_gun(id, CSW_FIVESEVEN)
return
}
if(Menu_Keys < 8) set_task(0.1, "Func_Menu_SettingsPrivilleges", id)
Len += formatex(Menu[Len], charsmax(Menu) - Len, Message[VIP_Weapon[id] == 0 ? 1:VIP_Weapon[id] == 1 ? 2:VIP_Weapon[id] == 2 ? 3:VIP_Weapon[id] == 3 ? 4:VIP_Weapon[id] == 4 ? 5:6])
register_event("ResetHUD", "ResetHUD", "be")
public GiveItems(id, VIP_Weapon[]) {
switch(Native_VIPBonus(VIP_Weapon[id]) {
case 0: {
if(!user_has_weapon(id, CSW_DEAGLE)) {
give_item(id, "weapon_deagle")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
}
}
case 1: {
give_item(id, "ammo_50ae")
}
case 2: {
give_item(id, "ammo_50ae")
}
case 3: {
give_item(id, "ammo_50ae")
}
case 4: {
give_item(id, "ammo_50ae")
}
case 5: {
give_item(id, "ammo_50ae")
}
case 6: {
give_item(id, "ammo_50ae")
}
case 7: {
}
}
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
fm_strip_user_gun(id, CSW_GLOCK18)
fm_strip_user_gun(id, CSW_USP)
fm_strip_user_gun(id, CSW_P228)
fm_strip_user_gun(id, CSW_ELITE)
fm_strip_user_gun(id, CSW_FIVESEVEN)
return
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8