private function QuestBounty takes integer qn returns nothing local player p for(int i=0;i<15;i++) set p = Player(i) if GetPlayerController(p) == MAP_CONTROL_USER&&GetPlayerSlotState(p) == PLAYER_SLOT_STATE_PLAYING then call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)+QGold[qn]) call AddHeroXP(Hero[i],QXp[qn],true) endif endfor endfunction
private function QuestForDieUnitTimer takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local group g = LoadGroupHandle(Hash,id,0) local integer qn = LoadInteger(Hash,id,1) if IsUnitGroupDead(g) then if QFinalBool[qn] == false then set QFinalBool[qn] = true call QuestSetCompleted(QQuest[qn],true) call QuestBounty(qn) endif call GroupClear(g) call DestroyGroup(g) call PauseTimer(t) call DestroyTimer(t) call FlushChildHashtable(Hash,id) endif set t = null set g = null endfunction
private function QuestForDieUnitGive takes integer qn,integer mob returns nothing local timer t = CreateTimer() local integer id = GetHandleId(t) local group g = CreateGroup() if QStartBool[qn] == false then set QStartBool[qn] = true call SaveGroupHandle(Hash,id,0,g) call SaveInteger(Hash,id,1,qn) call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,duration,QStartTxt[0]) for(unit e;UnitsInRange(0.,0.,Range)use TG) if (GetUnitTypeId(e) == mob) then call GroupAddUnit(g,e) endif endfor call TimerStart(t,LoopTime,true,function QuestForDieUnitTimer) endif set t = null set g = null endfunction
private function PickUnit takes nothing returns boolean if GetSpellAbilityId() == 'A002' then if (GetUnitTypeId(GetSpellTargetUnit()) == 'n001') then if QFinalBool[0] == true then call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,duration,QFinalTxt[0]);SetWaterBaseColor(255,255,255,255) set QFinalBool[0] = false else if QStartBool[0] == false then set QQuest[0] = CreateQuest() call QuestInfo(QQuest[0],"Проблема с водой",QStartTxt[0],"ReplaceableTextures\\CommandButtons\\BTNDeathCoil.blp",bj_QUESTTYPE_REQ_DISCOVERED) call QuestForDieUnitGive(0,'n000') endif endif endif endif return false endfunction
private function Init takes nothing returns nothing local trigger t = CreateTrigger() local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null) set i = i + 1 exitwhen i == 15 endloop call TriggerAddCondition(t,Condition(function PickUnit)) set t = null /////////////////////////////// К В Е С Т - 1 ////////////////////////////////////// //QEffect[0] = QStartTxt[0] = "|cFF6B00FFФред|r: В последнее время у нас в деревне пошла эпидемия! Много людей были отравлены. Я заметил, что вода с каждым днем становится более зеленой! Это все из-за воды! Прошу, проверь, что у нас с рекой!
|cFF0080FFИгрок|r: Хорошо, я узнаю, что там случилось.
|cFF540081Награда|r: |cFFFF0303Опыт|r: 30 |cFFFFDA00Золота|r: 50" QFinalTxt[0] = "|cFF6B00FFФред|r: Ухх... Какая чертовщина! Я подозревал, но я бы не с правился с такой тварью! Благодарю!" QGold[0] = 50 QXp[0] = 30 /////////////////////////////// К В Е С Т - 1 ////////////////////////////////////// endfunction
endscope
Код
function IsUnitGroupDeadEnum takes nothing returns nothing if GetWidgetLife(GetEnumUnit()) > 0 then set bj_isUnitGroupDeadResult = false endif endfunction
function IsUnitGroupDead takes group g returns boolean local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false
set bj_isUnitGroupDeadResult = true call ForGroup(g, function IsUnitGroupDeadEnum)
if (wantDestroy) then call DestroyGroup(g) endif return bj_isUnitGroupDeadResult endfunction
Вообщем, начал делать рпг, создал половину системы, один тип заданий. Хочу узнать код приличный?
Добавлено (12 Января 2013, 19:37:00) --------------------------------------------- Что-то я не понимаю, как впихнуть 1-ну библиотеку в другую. имя 1-ой Navigate , название функции Compas. Как впихнуть?
Ty3uK, да я знаю, я не могу понять как название писать, т.е например я в корне что-то function olol takes unit u returns nothing, в функции юзаю olol(u), а как библиотеку Navigate__Compas(...)?
Точно, нужно еще создать триггер и написать в нем: undef Player А то он заменяет еще и в функции config, которую трогать вообще строго противопоказано.