Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Ищу функцию обновления имен находящихся рядом чаров

тут можно задать вопрос по скриптингу
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Ищу функцию обновления имен находящихся рядом чаров

Post by shinma »

Вопрос такой. чар видит только один раз ники на экране и заносит в журнал. Есть ли функция которая специально засвечивает все ники которые есть на экране в журнал.

просто скрипт такой

1 - Обновляю таймер начала просмотра журнала
2 - какое либо действие занимающее время
3 - сверяю таймер если за это время в журнале показалась строка с заранее указанным ником НПС/ИГРОКА то оборвать цикл и продолжить выполнение кода после цикла.


НО!!!! если по какому то не чайному событию все таки ники в журнал заносятся ДО: "1 - Обновляю таймер начала просмотра журнала" то скрипт тупо не срабатывает. Есть ли функция которая обновит все ники НПС/Игроков на экране в таком цикле и чтобы они занеслись в журнал и скрипт все таки сработал?
SuperPups
Posts: 5
Joined: 08.05.2011 7:38

Post by SuperPups »

Есть команда 'resend в клиенте. Она обновляет все.
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

такой команды нет, и я думаю это не лучший вариант.
у тебя есть 2 инструмента:

1. FindType
2. GetDistance

в FindType забей типы человеков, собери массив ID, а потом проверяй рядом они или нет
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

по умолчанию в клиенте вообще нет команд. это только если на сервере админы написали проверку на ввод буков в чат и соответствующее действие в ответ от сервера.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

нет такой команды. то, что этот кстыль есть на АОПе - это личные проблемы АОПа.

shinma - кривая постановка вопроса. не в ту сторону роешь. рой в сторону FindType - там не будет зависеть от того, когда появились. Возможно ивенты появления PC (NPC) помогут тебе
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

ухты, ивенты появления PC (NPC) эту круто,
http://stealth.od.ua/wiki/doku.php?id=event

evUpdateChar, evDrawObject : [ID] - отрисовка чара (не обязательно нашего!)
эти ивенты? и еще вопрос, они стрельнут если NPC пропал из виду, а потом вернулся? иными словами это ивенты появляния в списке стелса или появления в пределах экрана? :)
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

действие происходит мгновенно.
в общем вот алгоритм

1 - repeat
ctime := Now;
2 - идем рубить деревья
3 - until InJournalBetweenTimes('ИМЯ', ctime, Now)>= 0;

когда скрипт заходит в цикл репит журнал не всегда записывает рядом стоящих. Это уже хз почему. наверно против таких ботоводеров как я. Но факт, что иногда запись в журнал не заносится. А мне надо чтобы чар мгновенно среагировал и побежал от этого сраного Энта. Я просто не знаю это самое FindType в моем цикле не замедлит ли реакцию хотябы на тех кто все таки нормально в журнал заносится?


ОООО придумал а если я хочу делать всю проверку журнала полную так сказать даже до ctime := Now;. и после проверки стрирать журнал. чтобы в новой проверки не отобразился повтор. так можно?
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

наоборот - ускорит :)
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

ок спасибо за наводку а то чар то уже сам себя оживляет закупается итд но ладно бы от ПК умирал но от НПС это ппц нубство.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

я не уверен, что работает быстрее - findtype или перебор строк журнала - но, если findtype и медленнее, то ненамного.
я бы все же в сторону ивентов смотрел :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

скажем так я посмотрел на эвенты и ничего там не понял как это evUpdateChar в скрипт вставить и использовать.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

пример смотрел в FAQ ?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

procedure Unicode_Speech(text,SenderName : String; SenderID : Cardinal);
begin
AddToSystemJournal('Event! Unicode Speech: SenderID = $'+ IntToHex(SenderID,8) + ' ; SenderName = ' + SenderName + '; SenderText : ' + text);
end;



SetEventProc(evUnicodeSpeech,'Unicode_Speech'); //Почему в процедуре обьявляются три переменные, а на деле ей передается только одна'Unicode_Speech'. и зачем нужна вообще тогда SetEventProc если я могу просто вызвать Unicode_Speech(с параметрами);

вот я это не понял
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

есть всезнающий оракул SetEventProc, он знает где и что и когда происходит вокруг.
А ты к этому оракулу обращается с просьбой, - "когда увидиш что кто-то рядом болтает, плиз вызови мою функцию Unicode_Speech"
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

это можно в любом месте скрипта вводить..... а точнее в самом его старте и типа можно забыть? он отдельно будет ... как бы выразится... типа в параллельном потоке пахать, но как событие произойдет вызовет функцию? так?
Post Reply