|
bandageself - почему не работает? |
|
|
| ikorus |
3.11.2014, 14:27
|

 
Группа: Пользователи Наличность: 0
Пользователь №: 16.948
Возраст: 36

|
В клиенте встроенный макрос bandageself не работает. Допускаю, конечно, что я просто не разобрался, как правильно его использовать, но информации по тому, как правильно я не нашел, поэтому можно считать, что не работает. Кто-нибудь знает, как этот макрос работает? Как альтернативу я пробую написать скрипт на хил, срабатывающий от текстовой команды, но уперся в проблему: чтобы скрипт запустить, нужен даблклик по объекту (IMG: style_emoticons/default/sad.gif) Каким еще образом можно запустить скрипт, а еще лучше - каким образом можно даблклик эмулировать в скрипте?
|
|
|
|
|
|
|
  |
Ответов
| ikorus |
5.11.2014, 23:04
|

 
Группа: Пользователи Наличность: 0
Пользователь №: 16.948
Возраст: 36

|
Цитата(RL_ka @ 5.11.2014, 19:27)  Код if (who.attached) SendSysMessage(who, "You are already doing something else."); return; endif
этот атрибут блокирует использование хила только, когда перс занят: во время медицации теперь лечиться нельзя, как и во время майнинга или другого действия в цикле (loop). попробовал вешать свойства объекта на чара на время хила, но не срабатывает фишка - все равно хилится, не ждет, пока закончит. Вот куски нерабочей схемы Код if( GetObjProperty( who, "#HealPatient" ) ) SendSysMessage( who, "You must wait before being able to heal yourself again." ); return 0; endif
var heal; SetObjProperty( who, "#HealPatient", heal ); ... тут хилимся ... EraseObjProperty( who, "#HealPatient" );
На самом деле attached указывает на используемый в данный момент персонажем скрипт. Если используется (скрипт "прикреплен" к персонажу), - то нельзя будет хилить. В остальных случая можно. Получается, что нужно добавить мой скрипт в число тех, которые лочат чара, и тогда все будет правильно реализовано. А остальное - костыли
|
|
|
|
|
|
| pager |
6.11.2014, 6:49
|
   
Apprentice
Сообщений: 147
Регистрация: 10.1.2006 Группа: Пользователи Наличность: 0 Из: --
Пользователь №: 4.699
Возраст: --

|
Цитата(ikorus @ 6.11.2014, 1:04)  этот атрибут блокирует использование хила только, когда перс занят:
Вот еще одно решение проблемы : Скрипт выводит сообщение( с поддержкой множество языков ) если в группе PROC_SKILL есть процессы .Пример сообщения: Подождите пока завершится : Навык лечения. Так же можно скрипту посылать событие с помощью функции MSendprocEvent например для того чтобы при смерти или выходе из игры персонажа, скрипт завершался мгновенно. Если кого заинтересовало, то MsendProcEvent и другие includes лежат в пакете spawnernpc на форуме.. Код ///////////////////////////////////////////// language.cfg Language Rus { Message_Wait_script Подождите пока завершится script_usebandage_name Навык лечения.
}
Language Enu { Message_Wait_script Wait until the end script_usebandage_name Skill healing.
}
//////////////////////////////////////
Use uo; Use os; Use unicode;
Const PROC_SKILL := “skill”;
var language_cfg := ReadConfigFile(“:*:language”);
Program usebandage(who,bandage) var lang := MGetMobileLanguage(who); if(!MGetProcDelay(who,PROC_SKILL,who,lang)) MsetProcPid(who,PROC_SKILL,”usebandage”,struct{pid := GetPid(),message := "script_usebandage_name”,level := 0}); Bandages(who,bandage,lang); MsetProcPid(who,PROC_SKILL,”usebandage”); endif endprogram //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function Bandages(byref who,byref bandage,byref lang) Код скрипта........... ... ….
endfunction
////////////////////////////////////////////////include functions /////////////////////////////////////////////////// function MGetProcDelay(object,procname,mobile,lang,level := DEFAULT_PROC_LEVEL) var prop := MGetObjProperty(object,"#procpid",dictionary); foreach name in (prop[procname].keys()) if(Cint(prop[procname][name].level) == Cint(level)) MConfigLanguageSendSysMessageUc(mobile,"message_wait_script",lang.langcode,": " + MGetElement(GetConfigString(language_cfg[lang.langcode],prop[procname][name].message),prop[procname][name].message + " - language_cfg not found."),lang.font,lang.color); return 1; endif endforeach endfunction //////////////////////////////////////////////////////////////////////////////////////////////////////////////// function MGetObjProperty(object,name,err := 0) if(name in object.propnames()) return object.getprop(name); else return err; endif endfunction //////////////////////////////////////////////////////////////////////////////////////////////////////////////// function MConfigLanguageSendSysMessageUc(who,name,langcode,text := "",fount := _DEFAULT_UCFONT,color := _DEFAULT_UCCOLOR) return SendSysMessageUc(who,CAscZ(MGetElement(GetConfigstring(language_cfg[langcode],name),name + " - language_cfg not found ") + text),langcode,fount,color); endfunction
////////////////////////////////////////////////////////////////////////////////////////////////////////////// function MGetElement(structure,err := 0) if(structure) return structure; else return err; endif endfunction
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function MSetProcPid(mobile,procname,name,structure := 0) set_critical(1); Detach(); var prop := MGetObjProperty(mobile,"#procpid",dictionary); if(!structure and !prop[procname].size() <= 1) prop.erase(procname); elseif(!structure) prop[procname].erase(name); elseif(!prop.exists(procname)) prop.insert(procname,dictionary{name -> structure}); else prop[procname].insert(name,structure); endif mobile.setprop("#procpid",prop); set_critical(0); endfunction /////////////////////////////////////////////////////////////////////////////////////////////////////////////// function MGetMobileLanguage(byref mobile) return MGetObjProperty(mobile,"language",struct{langcode := "rus",font := _DEFAULT_UCFONT,color := _DEFAULT_UCCOLOR}); endfunction
Сообщение отредактировал RL_ka - 6.11.2014, 14:52
|
|
|
|
|
|
Сообщений в этой теме
ikorus bandageself - почему не работает? 3.11.2014, 14:27 Juzzver для работы макрос команды bandageself нужно создат... 3.11.2014, 14:37 ikorus
для работы макрос команды bandageself нужно созда... 3.11.2014, 16:54 RL_ka
Как альтернативу я пробую написать скрипт на хил,... 3.11.2014, 17:03 ikorus Вот такой скрипт успешно работает, но как видно - ... 3.11.2014, 20:46 RL_ka Ну не удивительно.
У тебя вообще ни в одном месте ... 3.11.2014, 21:24 ikorus
Ну не удивительно.
У тебя вообще ни в одном месте... 5.11.2014, 15:17 ikorus
Простейшая проверка на наличие бинтов пишется вот... 5.11.2014, 21:58 RL_ka Ну тогда остаётся последний вариант фикса "из... 6.11.2014, 2:25 ikorus Отладил вариант с навешиванием пропертисов - все р... 6.11.2014, 22:18 RL_ka Слабое место: если в момент задержки, между начало... 7.11.2014, 0:33 ikorus
Слабое место: если в момент задержки, между начал... 7.11.2014, 20:24 RL_ka Молодец, быстро учишься :)
Следующая твоя задача,... 7.11.2014, 22:58 PolDev
А что за два скрипта? А то я не уловил )) 12.11.2014, 21:44 RL_ka
А что за два скрипта? А то я не уловил ))
обычн... 13.11.2014, 12:05
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|