http://tz.mail.ru/cgi-bin/forum.pl?c=198297512&a=DEV

ZScripter. Вопросы и ответы.

Добрый [19]

Добавлено:
18.08.10 16:12
Модуль ZScripter позволяет игрокам создавать свои плагины без использования каких-либо сторонних средств.

В основу создания скриптов заложена связка HTML и JavaScript. Простой и удобный функционал, ничего лишнего.

Благодаря HTML и CSS вы можете создать тот интерфейс, который вам будет нравиться, а используя возможности JavaScript - будете получать запрашиваемую информацию, без лишнего ожидания.

Добрый [19]

Добавлено:
18.08.10 16:39
Примеры скриптов можно скачать в топике http://www.timezero.ru/cgi-bin/forum.pl?a=DEV&c=198297942

Сердцем всего плагина является функция:

getgamedata("параметр","имя персонажа")
• параметр - данные, которые плагин хочет получить от игровой flash.
• имя персонажа - в игровой закладке которого будет выполнен этот запрос.

Функция возвращает ответ от игровой flash, в случае если запрос указан корректно.

Пример использования:
<script>
document.write(GetGameData("_root.USER.login"));
</script>

В примере используется запрос _root.USER.login, который отвечает за получение данных о нике персонажа, второй параметр отсутствует - плагин совершает запрос в текущей закладке.

Указав в запросе _root.USER.login вместо login любой из ниже перечисленных параметров вы можете получить более детальную информацию о персонаже:

login  - Имя персонажа
HP   - Текущее количество здоровья
maxHP   - Максимальное количество здоровья
str   - Сила
dex   - Ловкость
int   - Интуиция
pow   - Выносливость
acc   - Меткость
intel   - Интеллект
exp   - Опыт (обратите внимание, что это значение текущего опыта персонажа)
nextlevel  - Необходимое количество опыта для достижения следующего уровня
level   - Уровень
pro   - Профессия. Идентификатор имеет следующие значения:
   1=Профессия: корсар
   2=Профессия: сталкер
   3=Профессия: старатель
   4=Профессия: инженер
   5=Профессия: наемник
   6=Профессия: торговец
   7=Полицейский: патрульный
   8=Полицейский: штурмовик
   9=Полицейский: специалист
   10=Профессия: журналист
   11=Профессия: чиновник
   12=Профессия: псионик
   13=Каторжник
   14=Профессия: пси-кинетик
   15=Профессия: пси-медиум
   16=Профессия: пси-лидер
   17=Профессия: полиморф
 30=Профессия: дилер
propwr   - Уровень профессии (значение от 0 до 1)
man   - Пол персонажа
virus   - Наличие заражения вирусом X
psy   - Текущий уровень пси-энергии
maxPsy   - Максимальный уровень пси-энергии

Местонахождение:
X   - Первая координата местонахождения персонажа
Y   - Вторая координата местонахождения персонажа (Координаты даются в формате 0..360, а не -180..180)
ROOM   - Номер комнаты в шахте

Навыки:
sk0   - Холодное оружие
sk1   - Легкое оружие
sk2   - Среднее оружие
sk3   - Тяжелое оружие
sk4   - Метательное
sk5   - Энергетическое
sk6   - Медицина
sk7   - Минирование
sk8   - Электроника
sk9   - Пси-контроль
sk10   - Пси-атака
sk11   - Пси-медицина
sk12   - Пси-искажение

>> Добрый [19] , 19.08.10 13:19:
Добавлю: переменная PLUG_PATH показывает на каталог, где лежит TimeZero.exe. Пользуясь ей, можно подключать значки и прочие файлы из набора клиента, например, профессии.

nikitos [13]

Добавлено:
19.08.10 01:32
А можно скрипт, получения данных о персонаже?

nikitos [13]

Добавлено:
19.08.10 01:33
Пример скрипта, чтобы было от чего отталкиваться...

nikitos [13]

Добавлено:
19.08.10 01:37
Прошу прощения, что зафлудил все, Просто думаю, что не так поймете, вообщем хотелось бы увидеть небольшой пример монитора персонажа.

Hallo [12]

Добавлено:
19.08.10 02:11
nikitos [13]
Как то так:

   <head><meta http-equiv="Content-Type" content="application/xhtml+xml;  charset=utf-8" /><link rel="stylesheet" href="PLUG_PATH:///css/client.css" type="text/css" /></head>
<script language="javascript">

function i (s) {

return getgamedata("_root.USER."+s);

}

       s = '<br />Имя персонажа: ' + i("login") + '['+i("level")+']';
       s += '<br /><hr />';
       s += 'Навыки персонажа: <br />';
s += '<br />Холодное оружие '+ i("sk0");
s += '<br />Легкое оружие '+ i("sk1");
s += '<br />Среднее оружие '+ i("sk2");
s += '<br />Тяжелое оружие '+ i("sk3");
s += '<br />Метательное '+ i("sk4");
s += '<br />Энергетическое '+ i("sk5");
s += '<br />Медицина '+ i("sk6");
s += '<br />Минирование '+ i("sk7");
s += '<br />Электроника '+ i("sk8");
s += '<br />Пси-контроль '+ i("sk9");
s += '<br />Пси-атака '+ i("sk10");
s += '<br />Пси-медицина '+ i("sk11");
s += '<br />Пси-искажение '+ i("sk12");

               
document.write(s);
</script>

nikitos [13]

Добавлено:
19.08.10 02:24
Спасибо  

Hallo [12]

Добавлено:
19.08.10 02:26
Упс... в начале скрипта:
charset=utf-8

меняем на

charset=wndows-1251

HypeRSiB [14]

Добавлено:
19.08.10 09:22
Я вот только не нашел переменную которая возвращает значение названия клана....

>> HypeRSiB [14] , 19.08.10 09:24:
Извиняюсьза тупость. Нашел.

Добрый [19]

Добавлено:
19.08.10 11:39
Там примеры скриптов приложены в соседнем топике, ищите и обрящете. =)

DOOMovoj [17]

Добавлено:
19.08.10 21:38
Добрый wrote:
Там примеры скриптов приложены в соседнем топике, ищите и обрящете. =)
     

Там их всего 2.....

Подскажите скрипт получения списка персонажей находящихся на одной с тобой локации....

jha_man [12]

Добавлено:
20.08.10 13:03
DOOMovoj wrote:
Добрый wrote:

Там примеры скриптов приложены в соседнем топике, ищите и обрящете. =)
     
Там их всего 2.....

Подскажите скрипт получения списка персонажей находящихся на одной с тобой локации....


Вот пример:
<head>
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset = windows - 1251" />
 <link rel="stylesheet" href="PLUG_PATH:///css/client.css" type="text/css" />
</head>
<center>
<script language="javascript">
if ( {PLUG_VERSION} >= 1012) {
 var myPlayer = prompt("Укажите имя персонажа, в закладке которого должен сработать скрипт:","");

 function GetLocPlayerData(player) {
   var result = "";    
   var login  = GetGameData("_shellchat."+player+".login",myPlayer);
   if (login == "") return "";
   var level  = GetGameData("_shellchat."+player+".level",myPlayer);
   var prof   = GetGameData("_shellchat."+player+".pro",myPlayer);
   var sex    = GetGameData("_shellchat."+player+".man",myPlayer);
   if (prof=="") prof = 0; if (sex == "0") prof += "w";
   var img    = "<img src='PLUG_PATH:///i/i"+prof+".gif' width=15 height=15 style='vertical-align:middle;' />";
   result     = "<B>"+login+"</B> ["+level+"]"+img;
   return result;
 }

 var locPlayers = TZExecute("GetLocationPlayers",myPlayer);
 if (locPlayers != "") {
   var locArray  = locPlayers.split(",");
   var locPlayer = ""; locPlayers = "";
   var count = 0;
   for (var i = 0; i < locArray.length; i++) {
     locPlayer = GetLocPlayerData(locArray[i]);
     if (locPlayer != "") {
       locPlayers += locPlayer+"<br />";
       count++;
     }
   }
   document.write("<table class=slist_base><tr><td height=1 class=room align=center><b>В локации:</b></td></tr>");
   document.write("<tr valign=top><td class=slist nowrap=nowrap valign=top>");
   document.write(locPlayers);    
   document.write(" <tr><td height=1 class=people align=center>"+count+" человек(а)</td></tr>");
   document.write(" <tr><td height=1 class=slist align=right>© [<b>jha_man</b>]</td></tr>");
   document.write("</td></tr></table>"
);
 } else document.write("Войдите в игру персонажем: <b>"+myPlayer+"</b>");
} else document.write("<h1>Версия плагина ниже 1.0.1.2</h1><br /><b>Перезагрузите оболочку клиента</b>");    
</script>
</center>

rezvil [15]

Добавлено:
20.08.10 14:55
Что-то у меня ничего не сработало. Может я чего не так делаю?

Добрый [19]

Добавлено:
20.08.10 17:23
rezvil [15]
Создал темку, пишите туда. =)

http://www.timezero.ru/cgi-bin/forum.pl?a=DEV&c=198474559

ДОСТАЛО_КОПАТЬ [18]

Добавлено:
20.08.10 17:25
Доработал рецепты, теперь считает всё что можно и неможно.
Файл уже обновили
http://www.timezero.ru/plugins/zscripts/recipes.txt

DOOMovoj [17]

Добавлено:
20.08.10 21:59
rezvil wrote:
Что-то у меня ничего не сработало. Может я чего не так делаю?

Скрипт написаный jha_man [12] работает.... тут даже не скрипт а почти плагин (какой нескажу   )

вот хотелось бы знать где можно посмотреть весь список доступных к запросу функций...
вот откуда например jha_man [12] знает как получать список персонажей на локации... я этого ни в мануалах ни в этой ветке не нашёл... и чаго ещё интересного можно узнать у сервера?  местоположение монстров и бойца в бою можно узнать?  

Добрый [19]

Добавлено:
21.08.10 02:04
DOOMovoj [17]

и конечно название функции ShootToMob(neareset)  

DOOMovoj [17]

Добавлено:
21.08.10 22:20
B>Добрый wrote:
DOOMovoj [17]

и конечно название функции ShootToMob(neareset)  
     

Да можно и без этой команды обойтись...
а по сабжу: Список доступных Функций с пояснениями в студию.  

Добрый [19]

Добавлено:
22.08.10 22:29
DOOMovoj [17]

Знает, потому что вкурил в DOM.
Никаких функций там нет, исключительно чтение данных.

jha_man [12]

Добавлено:
23.08.10 10:25
to DOOMovoj [17] :

В руководстве по написанию плагинов (http://www.timezero.ru/plugins/PlugIn_manual.ru.html) чётко сказано и, причём, не раз: Если у вас есть вопросы или вы хотите использовать какой-то недокументированный функционал:
Почта для связи: full_bugs@timezero.ru , в теме письма необходимо указать "Плагин" и название плагина (пример: "Плагин — Киборг").

DOOMovoj [17]

Добавлено:
23.08.10 20:03
to jha_man [12] Добрый [19] :

Спасибо. Ушёл вкуривать в DOM.  

Персона нонграта [4]

Добавлено:
06.09.10 17:44
Добрый день. Есть 2 вопроса:
1. Как получить цены на ресурсы во всех магазинах?
2. Какой параметр использовать в запросе GetGameData("_root.USER.???") чтобы получить сервер на котором находится персонаж (Archipelago или TerraPrima)?

jha_man [12]

Добавлено:
07.09.10 10:35
Персона нонграта wrote:
Добрый день. Есть 2 вопроса:
1. Как получить цены на ресурсы во всех магазинах?

Парсить соответствующий xml файлик. Кури: http://www.timezero.ru/manual/resinfo.ru.html

2. Какой параметр использовать в запросе GetGameData("_root.USER.???") чтобы получить сервер на котором находится персонаж (Archipelago или TerraPrima)?

Хороший вопрос.. Как вариант "дизассемблить" флешку и искать соответствующую переменную, что очень геморно и опасно
Предлагаю поймать админов и задать им этот вопрос в привате

_ML_ [15]

Добавлено:
07.09.10 16:25
jha_man [12]
2. Какой параметр использовать в запросе GetGameData("_root.USER.???") чтобы получить сервер на котором находится персонаж (Archipelago или TerraPrima)?


USER.serverid-номер сервера
спрашивайте я оч много переменных в тз знаю

Персона нонграта [4]

Добавлено:
07.09.10 19:25
jha_man wrote:
Парсить соответствующий xml файлик. Кури: http://www.timezero.ru/manual/resinfo.ru.html

Спасибо. Сам не догадался посмотреть :(

_ML_ wrote:
USER.serverid-номер сервера
спрашивайте я оч много переменных в тз знаю

Спасибо. А нет списка всех переменных, чтобы не спрашивать каждый раз? Заранее благодарен.

_ML_ [15]

Добавлено:
07.09.10 20:15
Персона нонграта [4]
напиши мне

Ксакеп [15]

Добавлено:
08.09.10 21:32
Поковырял пример скрипта "pets".
Заинтересовало вот что:
var type = getgamedata("_root.BoxList."+n+".ty
pe");
if (type =='888.1') {

Дописал строчку, получил список всех BoxList-ов.

786.0---786.0---786.0---840.0---892
.0---786.0---788.500---788.500---78
8.500---945.0---788.100500---944.1-
--944.3---944.7---944.5---944.6---9
44.2---944.14---944.4---944.8---944
.9---944.10---944.11---944.12---944
.13---944.15---944.16---788.4631---
788.4625---892.0---1.16---  и т.д.

Пробовал парсить структуру каждого BoxList-а, но видать еще недорос )

Есть у кого нибудь идеи как разобрать такой вот Бокс, без знания стуртуры?

Иногда бывает, что глянув на данные появляется идея куда их можно приспособить )

_ML_ [15]

Добавлено:
08.09.10 22:33
Ксакеп [15]
вещи из рюкзака с точным состоянием и перки.

_ML_ [15]

Добавлено:
08.09.10 22:49
Добрый [19]
кстате там доступ к флаш урезан или полный как и при плагинах (если полный то опять волна чит возможностей будет)

безымянная [15]

Добавлено:
13.09.10 17:05
кстате там доступ к флаш урезан или полный как и при плагинах (если полный то опять волна чит возможностей будет)

типа автонападалок и автоофа? )

000 торгаш 000 [6]

Добавлено:
13.09.10 18:24
безымянная wrote:
типа автонападалок и автоофа? )

авто наподение я функции честно не знаюно можно покопатся найти, а вот авто офф реально

но я сужу со стороны писателя плагинов так что могу ошибатся

>> 000 торгаш 000 [6] , 13.09.10 18:25:
_ML_

13 X-man [12]

Добавлено:
02.11.10 21:07
<script language = "text/JScript">
var userObject=GetGameData("_root.USER"
);
var a=[];
   for (o in userObject) {
          a[a.length]=o;
          a.join("/r/n");
   }
a.sort();
document.write(a);
</script>

Как же я был наивен,когда это писал  
А если по существу, то плагин хоть бы исключения возникшие показывал - было бы гуд..

GAZ_2356 [16]

Добавлено:
17.11.10 16:43
А кто знает какой параметр возвращает значение PVE рангов?

_ML_ [15]

Добавлено:
17.11.10 18:01
GAZ_2356 [16]
я знаю

theGraaL [16]

Добавлено:
15.01.11 21:49
как получить список включенных персонажей? по вкладкам
как получить историю жизни персонажа?

Hallo [14]

Добавлено:
26.03.11 18:59
theGraaL wrote:
как получить список включенных персонажей? по вкладкам
как получить историю жизни персонажа?
     


Историю жизни персонажа получить нельзя

_ML_ [15]

Добавлено:
27.03.11 07:58
Hallo [14]
если она открыта в данный момент в клиенте все данные из неё можно(через плагин 100% получаю)

Hallo [14]

Добавлено:
30.03.11 22:37
_ML_ [15] , eсли можно, дай кусок кода как это сделать ...

п.с. смысл оставлять такие комментарии ?

_ML_ [15]

Добавлено:
31.03.11 16:32
Hallo [14]
_root.baseroot.History.input_date.t
ext
_root.baseroot.History.rowHistoryDa
ta
ну по смыслу понятно что за что отвечает
З.Ы. если сделаеш модуль на любом языке кинь исходники. довно хотел логи  разберать да всё некогда занятся.
п.с. смысл оставлять такие комментарии ?

ты представляеш сколько переменных в ТО? и они мелко разбросаны у меня по дискам иногда лень искать

КиЦа [8]

Добавлено:
01.04.11 13:37
_ML_ [15] Спасибо, пашет

Код:

document.write("Start ");
var hdate;
var arrhistory = new Array();

hdate=getgamedata("_root.baseroot.H
istory.input_date.text");
if (hdate!="") {

document.write( 'Дата [' + hdate + ']<br>');

document.write( '<hr>');
arrhistory=getgamedata("_root.baser
oot.History.rowHistoryData");

document.write( arrhistory );
} else document.write( 'Ошибка: На персонаже не открыта История жизни' );


the GraaL [11]

Добавлено:
07.07.11 17:14
_ML_ [15] , КиЦа [8]
спасибо за ответ.

000 торгаш 000 [6]

Добавлено:
07.07.11 22:07
the GraaL [11]
да незачто спрашивайте, кстате в своё время мне админы сказали чо такое не доступно вообше

Badguy [16]

Добавлено:
05.09.11 01:51
АФИГЕТЬ! Почему я раньше сюда не заходил??! Столько вещей упрощающих жисть!!!! Класс!!! Понравилось тема с ценами на ресы в магазах..
Шикарно! Как-нить напишу суперпупер считалку прибыли для лапат.. хоть их и море.. но они меня не устраивают...

>> Badguy [16] , 05.09.11 01:56:
блииииин так можно еще и спрос на ресы вычислять!!! Вести статистику какой город больше ресу тянет.. йооооооооооооооооо это круто то как!!! ML предлагаю пачку сервисов подобных у себя разместить)))!

Airin Star [11]

Добавлено:
20.01.12 14:33
а до висящих бафов добраться можно ?

Anita Star [11]

Добавлено:
22.01.12 20:02
имеем <USERPARAM
....
bafs="23:1327246972:20;"
...
</USERPARAM>

как пример фракционного бафа.
а вот как добраться не через заднюю левую ногу  ...

Wonder-_-Sex [6]

Добавлено:
18.02.12 07:12
о чом это вы разговариваете я чтото немогу понять
Обьясните пожайлусто

k750i [18]

Добавлено:
02.12.13 22:39
Как вывести количество ресурсов из инвентаря?

KRa_SoTkA [15]

Добавлено:
12.12.13 13:31
почему у меня не работает покупные перки лайт грес и маднес  одновременно

der_MOHAX [7]

Добавлено:
20.06.17 16:02
А что если есть кучка вопросов по TZScripter, ветка оживет?
Например, я, как ленивый торг, хотел бы для себя написать небольшой парсер чата, может кто подтолкнуть меня к решению жтой задачи? в частности, как получить содержимое этого самого чата?

Fanor [7]

Добавлено:
22.06.17 12:29
А что если есть кучка вопросов по TZScripter, ветка оживет?

Пишите вопросы, ответы напишут. Если, конечно, решения вопроса не будет нарушать правила игры.

der_MOHAX [7]

Добавлено:
22.06.17 20:37
Пишите вопросы, ответы напишут. Если, конечно, решения вопроса не будет нарушать правила игры.


да собственно вопрос и состоит в том, чтобы получить содержимое чата, можно только вкладки "общая". Каким образом это можно сделать? GetGameData, TZExecute? Через какую переменную или команду? Дальнейшие мои действия просты: в полученном я хочу найти интересующую вещь, если кто-то прокричал в общий, а в случае успеха, просигнализировать.
В принципе, если подумать, то можно и не применять скриптер, а разбирать логи чата.

Fanor [7]

Добавлено:
23.06.17 08:08
der_MOHAX wrote:
В принципе, если подумать, то можно и не применять скриптер, а разбирать логи чата.

 Да, если играть с клиента игры, то чат автоматически сохраняет сообщения. Также чат можно разбить на вкладки (общий/приват/системки/клан и т.д.) для удобства.
 И после уже искать то, что вам нужно в закладки "История сообщения" с помощью "Поиск лога".

Kylon [17]

Добавлено:
22.07.17 22:18
Кто умеет писать скрипты к ZScripter?
Есть ли какое-либо руководство?

мНп [18]

Добавлено:
07.02.18 23:34
Какие нужны скрипты ?

-SIN- [16]

Добавлено:
22.03.18 15:35
Можно ли скриптом скидывать ненужные перки и брать нужные ? очень актуально, ибо приходится иногда переквалифицироваться в ПВЕ из ПВП  
Если стесняетесь, можно в приват я никому не расскажу  

-SIN- [16]

Добавлено:
25.03.18 21:50
Ну что вы молчите

Wowaka [14]

Добавлено:
17.08.19 15:49
Почему mail не запустит новый сервер игры более старой версии? Сразу людно будет и как бы общий старт вдохновит новичков! Ведь mail делал подобные эксперименты с другими играми к примеру DS,LA.....и игра оживала!

http://tz.mail.ru/cgi-bin/forum.pl?c=198297512&a=DEV