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

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

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

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

7 страниц V   1 2 3 ... 5 6 »

Ограничить покупку модов ( Zombie Plague Advanced )

, Во времени ( ночное ) / через 1 раунд / через 1 карту
Статус пользователя Slackerok
сообщение 1.4.2013, 13:11
Сообщение #21
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Моя ошибка, за что извиняюсь. Только что один из игроков пожаловался что ночью не смог купить моды =) Это уже хорошо. Однако я думаю здесь с временем что-то не то... Мой сервер сидит во Франции ( часовой пояс +1, мой +2 ). Я протестил в 23.20, во Франции было 22.20 и я смог купить мод...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 1.4.2013, 23:37
Сообщение #22
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

mazdan, я думаю нашел загвоздку в коде с временем. Как и ожидалось моды запрещаются в 23.00 а не в 22.00 )

return (hnum < 10 || hnum > 22) // здесь я как понимаю берется время меньше 10 ( то есть с 9 и ранее ) и больше 22 ( то есть 23 и позднее ).

Сделал

return (hnum < 11 || hnum > 21)

Подожду завтрашнего дня 22.00 увидеть если был все таки прав :D

Осталось с запретом через карту сделать) Помогите drinks.gif
Всем доброй ночи!

Отредактировал: Slackerok, - 1.4.2013, 23:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.4.2013, 6:14
Сообщение #23


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

можно отключить плигины на определенных картах или менять квары на определенных картах - это стандартными средствами amxx
Второй вариант проверять через get_mapname в плагине


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 2.4.2013, 8:08
Сообщение #24
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Скрытый текст
Код
#include <amxmodx>
#include <amxmodx>
#include <amxmisc>

new MapName[64]
new const Map[] = "de_dust2"


public plugin_cfg()
    get_mapname(MapName, 63)
    
//Там где покупка айтема, или что у вас там:
public buy(id)
{
    if(equal(MapName, Map))
    {
        client_print(id, print_chat, "Покупка данного предмета запрещенна на этой карте!")
        return PLUGIN_HANDLED
    }
    
    return PLUGIN_CONTINUE
}


Отредактировал: Nickk, - 2.4.2013, 8:10
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 2.4.2013, 10:43
Сообщение #25
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

mazdan, Нет нет, не отключать плагин, мне нужно ограничить его для каждого клиента отдельно. Пример:

Играют не сервере 25 человек. Игрок Ivan сделал на карте zm_dust2 170 аммо паков и решил купить мод Sniper. Купил, поиграл, а плагин регистрирует его и запоминает. На следующей карте zm_ice3 Ivan снова сделал 150 аммо паков и решил купить мод Nemesis, но когда нажимает на Nemesis, плагин блокирует покупку и пишет в чат:

[ZP] You can buy mods after this map. // И после карты zm_ice3 плагин снова позволит Ivan-у купить один из модов.

Вкратце нужно чтобы для каждого клиента разрешать покупать один из 4 модов один раз в 2 карты. Возможно такое сделать?

Nickk, Спасибо за отзыв и помощь!

Отредактировал: Slackerok, - 2.4.2013, 10:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 2.4.2013, 12:24
Сообщение #26
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Не за что.
То что вы хотите сделать ( там где про Ивана :D ) - трудоемко, т.к. плагин не может ничего в себе держать после смены карты.
Нужно с файлом работать, или с БД.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.4.2013, 13:31
Сообщение #27


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Nickk, можно пробовать карту прошлую хранить или в кваре или в server info


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 2.4.2013, 13:54
Сообщение #28
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

А если допустим сделать файл mod_restrict и логировать в него все покупки модов с названием карты , имя игрока, IP Игрока:

Код
"zm_ice_attack3" "Ivan" "123.123.123.123"
"zm_ice_attack3" "mazdan" 255.255.255.255
"zm_dust_kamp" "Alexei" "123.123.123.123"
"zm_snowbase2" "Nickk" 100.100.100.100
"zm_snowbase2" "Slackerok" "231.321.231.231


После этого допустим будет карта zm_foda и кто-то из нас захочет купить моды.

1) Перед покупкой сканирует последние 2 карты и сверит IP
В нашем случае zm_dust_kamp и zm_snowbase2
2) Если увидит тот же ИП с различием в одну карту, не допускать, если увидит различие в 2 карты, тогда позволяет.
В нашем случае Alexei, mazdan и Ivan смогут купить моды
Nickk и Slackerok нет.

Можно также дату и время чтобы иметь больше зацепок сверить карты

Отредактировал: Slackerok, - 2.4.2013, 14:25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 2.4.2013, 15:13
Сообщение #29
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Нужно еще где-то записывать последние 2 карты.
Хотя, может быть они логируются...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.4.2013, 16:17
Сообщение #30


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

чет я задачу не понял =)
Надо если нужно разрешить покупку через карту то это не так сложно. Если для всех - просто. Если помнить каждого то сложнее.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 2.4.2013, 16:38
Сообщение #31
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, я и имел в виду записывать все моды которые покупались как в способе который выше написал. Хотя я не знаю если можно реализовать все это в скриптинге :)

mazdan, Надо каждого понимать) Если трое успели купить моды на первой карте, на второй надо запрещать именно этим троим а не всему серверу. В общем надо каждому клиенту давать права купить только 1 мод на 2 карты.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.4.2013, 17:40
Сообщение #32


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Slackerok, если у вас по все со стимом то можно вести по стиму. Если нет то по айпи.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 2.4.2013, 19:04
Сообщение #33
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

mazdan, У меня сервер на оба протокола) Так что думаю лучше по ИП вести.

Отредактировал: Slackerok, - 2.4.2013, 19:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.4.2013, 20:39
Сообщение #34


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ну разницы особой нету. Есть несколько вариантов (ну я так вижу)
1. файл
2. Vault
3. mysql


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 2.4.2013, 21:14
Сообщение #35
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Первые два варианта думаю больше устраивают, так как mysql я не пользуюсь. По крайней мере не на что использовать =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.4.2013, 21:23
Сообщение #36


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

хватит мне спасибки лепить за каждый ответ.
1. http://amx-x.ru/viewtopic.php?f=9&t=137
2. http://amx-x.ru/viewtopic.php?f=9&t=1389
Читайте, выбирайте, пробуйте, если не получится то пишите =)

Отредактировал: iLLuSioN, - 2.4.2013, 21:29
Причина: Я за него :D


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 2.4.2013, 21:34
Сообщение #37
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Спасибо выражается в качестве благодарности за отзыв о помощи и общения, лично я уважаю и благодарю тех людей всегда если такая возможность есть. Если вам это не по душе, могу прекратить =)

Эхх, я в скриптинге вообще полный дуб, легкие готовые коды когда читаю, может и понимаю понемногу, а вот сделать план, разные функции, собирать по частям, я даже не знаю как или откуда начать писать его =) Но я прочитаю ту информацию которую вы мне дали, может что-то и слеплю =) Но это не говорит о том что я отказываюсь от готового кода :D

Отредактировал: Slackerok, - 2.4.2013, 21:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 3.4.2013, 7:43
Сообщение #38


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Slackerok, Ну нужно же учиться понемногу, если не собираетесь забить на это дело через месяц. Навыки пригодятся. Ничего сложного нет в записи\чтении в nvault или в файл. В файл будет чуть сложнее чем в в nvault т.к. с файла лучше брать 1 раз в начале карты данные, а vault можно дергать каждый раз в принципе.
Зато с файлом прозрачнее - руками можно пощупать =)


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 3.4.2013, 9:28
Сообщение #39
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

mazdan, Вы конечно же правы, но.. Вы мне предлагаете задачу о свойстве которой мне ничего не известно... Это пока.. Я вот смотрю на разные куски кода с обьяснением чего они делают, и знаете, я даже не знаю с чего начать :D. Хотя понимаю для чего они используются. Это как лабиринт без карты и без куска мела в руке =) Я же не хочу тупо все скопипастить оттуда в мой плагин покупки, знаю что все равно не получится. Но я всетаки попробую =) Всем будет веселье =)

В моем случае думаю лучше будет с файлом, так как нам ведь понадобится брать информацию о покупке модов с прошлой карты, и этого будет достаточно один раз в начале новой карты. Я прав?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 3.4.2013, 10:13
Сообщение #40


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Делаем отдельный плагин с нативами zp_user_buy_item() (если нет такого форварда в стандартных плагинах) zp_user_buy_on_lastmap(id)
Ну или типа того.
Плагин выполняет следующие функции.
1. при старте карты (в plugin_init(), например) считывает файл "lastmap_purchases.txt" после этого удаляет его
2. при покупке в нём вызывается native_zp_user_buy_item(id) (или форвардом, если его нет то нативом из другого плагина)
функция записывает в файл "lastmap_purchases.txt" айпи игрока
3. в плагине есть функция native_zp_user_buy_on_lastmap(id) которая возвращает 1 если игрок был в списке и 0 если не был.

Подробнее по пункту 1 - считывать будем из файла в trie массив, тогда искать будет очень просто.
Пример подобного функционала hhttp://amx-x.ru/viewtopic.php?f=9&t=2764#p26195 последний пример первого сообщения очень похож на ваш.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
7 страниц V   1 2 3 ... 5 6 »
 
Тема закрытаНачать новую тему
 
0 пользователей и 3 гостей читают эту тему: