Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

доработка snow

Статус пользователя Util
сообщение 25.11.2016, 21:47
Сообщение #1
Стаж: 9 лет 8 месяцев

Сообщений: 127
Благодарностей: 4
Полезность: 33

Добрый вечер.
Помогите сделать, чтобы при первом заходе у игрока была cl_weather 2. Но потом, если он ставит cl_weather 0 или любое другое значение, его выбор запоминало. И не ставило 2 уже в последующем.
Код:
#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Snow"
#define VERSION "1.1"
#define AUTHOR "TTuCTOH"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}

public plugin_precache()
{
engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"))
}

public client_connect(id)
{
client_cmd(id, "cl_weather 2")
}


Отредактировал: Util, - 25.11.2016, 21:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Bloo
сообщение 27.11.2016, 0:48
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Util, тут базу нужно юзать или локальное хранилище...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя d3m37r4
сообщение 27.11.2016, 7:23
Сообщение #3


Стаж: 11 лет

Сообщений: 304
Благодарностей: 119
Полезность: 604

Можно через get_user_info запоминать/загружать выбор игрока, это реализовано здесь
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Util
сообщение 27.11.2016, 10:06
Сообщение #4
Стаж: 9 лет 8 месяцев

Сообщений: 127
Благодарностей: 4
Полезность: 33

Цитата(Bloo @ 27.11.2016, 1:48) *
Util, тут базу нужно юзать или локальное хранилище...

Как это сделать? А nvault не лучше будет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Util
сообщение 27.11.2016, 20:29
Сообщение #5
Стаж: 9 лет 8 месяцев

Сообщений: 127
Благодарностей: 4
Полезность: 33

А помочь некому(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 28.11.2016, 17:13
Сообщение #6
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

Util, изучай
https://forums.alliedmods.net/showthread.php?t=91503
https://forums.alliedmods.net/showthread.php?t=76453
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Util
сообщение 28.11.2016, 18:18
Сообщение #7
Стаж: 9 лет 8 месяцев

Сообщений: 127
Благодарностей: 4
Полезность: 33

Algalon, я не скриптер!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 28.11.2016, 18:31
Сообщение #8
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

Util, ну тогда так и пиши - "сделайте за меня", а то помогите сделать.
В 3 посте дали тебе ссылку на плагин, ниже в той теме есть плагин который сохраняет данные в nvault, используй его.

Отредактировал: Algalon, - 28.11.2016, 18:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя paffgame
сообщение 28.11.2016, 19:00
Сообщение #9


Стаж: 11 лет

Сообщений: 126
Благодарностей: 61
Полезность: 367

Есть такой вариант.
Но я быдлокодер pardon.gif

Код:
#include < amxmodx >
#include < amxmisc >
#include < fakemeta_util >
#include < nvault >

new szSnow[33], szSave[33], szSteam[33][35], hNvault;

public plugin_precache()
engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));

public plugin_init(){
register_plugin("Snow", "1.0", "PAffAEJIkA :3");

register_clcmd("say /snow", "SnowMenu");
register_clcmd("say_team /snow", "SnowMenu");

nvOpen();

new map[32];
get_mapname(map, charsmax(map))
if(equal(map, "de_aztec"))
fm_remove_entity_name("env_rain");
}

public client_putinserver(id){
get_user_authid(id, szSteam[id], charsmax(szSteam[]));

new sSave[40];
format(sSave, charsmax(sSave), "[A]%s", szSteam[id]);

new key = nvault_get(hNvault, sSave);

if(key){
szSave[id] = true;
key = nvault_get(hNvault, szSteam[id]);
}else{
szSave[id] = false;
key = 2;
}

szSnow[id] = key;
client_cmd(id, "cl_weather %d", key);
}

public SnowMenu(id){
new menu = menu_create("Выберите интенсивность снега", "Func_Snow");

new item[5][64];

format(item[0], charsmax(item[]), "\%sВыключить", szSnow[id] == 0 ? "d" : "w");
format(item[1], charsmax(item[]), "\%sСлабая", szSnow[id] == 1 ? "d" : "w");
format(item[2], charsmax(item[]), "\%sСредняя", szSnow[id] == 2 ? "d" : "w");
format(item[3], charsmax(item[]), "\%sСильная", szSnow[id] == 3 ? "d" : "w");
format(item[4], charsmax(item[]), "\wСохранение параметров \d[%s\d]", szSave[id] ? "\yвкл" : "\rвыкл");

menu_additem(menu, item[0], "1");
menu_additem(menu, item[1], "2");
menu_additem(menu, item[2], "3");
menu_additem(menu, item[3], "4");
menu_additem(menu, item[4], "5");

//menu_setprop(menu, MPROP_NEXTNAME, "Вперед");
//menu_setprop(menu, MPROP_BACKNAME, "Назад");
menu_setprop(menu, MPROP_EXITNAME, "\rВыход");
return menu_display(id, menu, 0);
}

public Func_Snow(id, menu, item) {
if(item == MENU_EXIT)
return PLUGIN_HANDLED;

new data[30], iName[64], access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), iName, charsmax(iName), callback);
new key = str_to_num(data);

switch(key){
case 5:{
szSave[id] = szSave[id] ? false : true;
SettingsSave(id, szSnow[id], szSave[id] ? "1" : "0");
}
default:{
szSnow[id] = key - 1;
client_cmd(id, "cl_weather %d", key - 1);

if(szSave[id])
SettingsSave(id, key - 1, "1");
}
}
return SnowMenu(id);
}

public SettingsSave(id, setting, aSave[]){
new key[3], sSave[40];

num_to_str(setting, key, charsmax(key));
format(sSave, charsmax(sSave), "[A]%s", szSteam[id]);

nvault_set(hNvault, szSteam[id], key);
nvault_set(hNvault, sSave, aSave);
}

public nvOpen(){
hNvault = nvault_open("SnowSettings");

if(hNvault == INVALID_HANDLE)
set_fail_state("Fail open NVAULT file!");
}

public plugin_end()
nvault_close(hNvault);


Отредактировал: paffgame, - 28.11.2016, 19:05


Не "Говнокод", а "необъективность решений и извилистый подход к задаче".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Util
сообщение 28.11.2016, 21:47
Сообщение #10
Стаж: 9 лет 8 месяцев

Сообщений: 127
Благодарностей: 4
Полезность: 33

paffgame, я в шапке дал плагин, можно туда сохранение перенести?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя paffgame
сообщение 28.11.2016, 22:25
Сообщение #11


Стаж: 11 лет

Сообщений: 126
Благодарностей: 61
Полезность: 367

Цитата(Util @ 28.11.2016, 22:47) *
paffgame, я в шапке дал плагин, можно туда сохранение перенести?


Зачем?
Я дал полностью готовый плагин.

Отредактировал: paffgame, - 28.11.2016, 22:25


Не "Говнокод", а "необъективность решений и извилистый подход к задаче".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 28.11.2016, 22:30
Сообщение #12


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Почему не сохранить прям на клиенте в setinfo?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Util
сообщение 29.11.2016, 6:16
Сообщение #13
Стаж: 9 лет 8 месяцев

Сообщений: 127
Благодарностей: 4
Полезность: 33

paffgame, мне меню не нужны.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 29.11.2016, 11:36
Сообщение #14
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

Util, ну тогда вам точно нужно идти в эту тему с вашими запросами.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: