WoW API: понизить в должности всех людей с каким-то рангом?

Я хочу понизить (понизить ранг) каждого члена моей гильдии с определенным рангом (например, всех новичков до новичков)

--- есть идеи, как это сделать в World of Warcraft API?

(Я предполагаю, что какой-то цикл проверяет имена всех членов гильдии, если ранг и понижение затем? - Пожалуйста, напишите пример, если это так)

Спасибо за будущие ответы :)


person wowapier    schedule 25.08.2013    source источник
comment
Я не эксперт по WoW, но согласно сайту его API написан на Lua, не C. Возможно, вам следует удалить тег C и добавить тег Lua.   -  person Lorenzo Donati -- Codidact.com    schedule 26.08.2013
comment
@wowapier Единственное, что общего у Lua с C, это то, что это язык программирования. Кроме этого, они не могли бы быть более разными. JavaScript, близкий родственник Lua (динамическая типизация, сборка мусора, замыкания, наследование через прототипы и т. д.), по крайней мере, имеет C-подобный синтаксис. В Луа нет даже этого.   -  person Mud    schedule 26.08.2013
comment
Я указывал, что это больше похоже на C, чем на Pascal - вы сами сказали, что целуете кузена ‹ все еще связаны - и ВСЕ ЕЩЕ не понимаю, почему кто-то должен ранжировать этот вопрос? Это действительно интересная проблема...   -  person wowapier    schedule 26.08.2013
comment
Я сказал, что JavaScript — близкий родственник Lua, а не C. И именно Lua имеет синтаксис, подобный Pascal, а JavaScript — синтаксис, подобный C. Lua действительно не может быть более далеким от C в том, что касается языков. Единственное, что их объединяет, это то, что они оба императивны. Что касается отрицательного голосования, я это сделал, потому что вы, по сути, просите кого-то написать это для вас и явно не сделали никакой работы. Никто. Раньше я сам писал аддоны. Этот материал очень легко Google. Stackoverflow не должен заменять Google.   -  person Mud    schedule 26.08.2013
comment
Вероятно, вы ищете эту функцию: wowwiki.com/API_GetGuildRosterInfo ; для цикла for вы можете использовать GetNumGuildMembers(), а когда вы получаете имя в цикле, используйте GuildDemote(name)? Надеюсь, я правильно понял ваш вопрос :)   -  person jave.web    schedule 26.08.2013
comment
и @Mud давай, чувак, не ешь его только потому, что он думает по-старому... для меня Lua больше напоминает мне Фортран или что-то в этом роде :)   -  person jave.web    schedule 26.08.2013
comment
Не пытаюсь его съесть, просто уточню. Возможно, он даже никогда не видел Lua, учитывая, что это очень редкий и заметный пример современного языка с синтаксисом, подобным Паскалю, но он сказал, что он не похож на Паскаль. Может быть, он на самом деле думает о JavaScript?   -  person Mud    schedule 26.08.2013
comment
Ну, я видел Lua раньше, и мне очень жаль, но несколько примеров, казалось, использовали подход C :/   -  person wowapier    schedule 26.08.2013


Ответы (2)


Когда я играл, первое место, куда я всегда обращал внимание, было wowwiki. Вот список функций гильдии. Похоже, вы можете вызвать GetGuildRosterInfo от 1 до GetNumGuildMember раз (или пока GetGuildRosterInfo(N) не вернет nil), чтобы получить имя и ранг игрока, а затем вызвать GuildDemote, чтобы понизить игроков.

Что-то вроде этого (полностью не проверено, у меня даже не установлен WoW в эти дни):

for i=1,GetNumGuildMembers() do
    local name, rank = GetGuildRosterInfo(i)
    if rank == "The rank you're iterested in" then
        GuildDemote(name)
    end
end

Вы можете попробовать вызовы API в игре. Вы даже можете написать большую часть своего дополнения в игре. Когда я играл, я написал для себя довольно много дополнений и опубликовал несколько. Одним из них (Hack) был внутриигровой редактор сценариев Lua. Я думаю, что кто-то подхватил мяч и продолжил его. Вы должны искать, чтобы получить что-то подобное.

person Mud    schedule 26.08.2013
comment
Хорошо, спасибо за подсказку, но как написать больше строк? (Страницы Lua, кажется, имеют свои циклы на большем количестве строк (как и вы)) когда я пытаюсь это сделать, это не работает - person wowapier; 26.08.2013
comment
Lua, по большей части, не заботится о пробелах. Вы можете написать весь скрипт в одну строку. Однако лучше было бы получить что-то вроде DevPad, чтобы вы могли писать читаемый код в игре. - person Mud; 26.08.2013
comment
Что ж, я попытался поместить ваш код в конец поля адреса браузера, а затем вставить его после /run, и теперь он работает :) Спасибо за пример! :) - но еще вопрос - неужели нельзя сделать больше строк прямо в макросах игры? :( - person wowapier; 26.08.2013
comment
это действительно нельзя сделать на большем количестве строк непосредственно в игровых макросах? Неа. Макросы не являются Lua (хотя они могут содержать Lua через /run). - person Mud; 26.08.2013

Это разъяснение для остальной части вопроса ОП о возможности сделать это в макросе.

Вот что-то, что было в одном из моих макросов, отформатированное, чтобы вы могли прочитать это здесь:

/run for i=0,0 do local instanceName, instanceDesc, backgroundTexture, buttonTexture, 
    titleBackground, mapID, instanceLink = EJ_GetSearchResult(i); if mapID then print
    (i,instanceName, mapID) end end

/dump GetLFGDungeonInfo(20)

Вот то же самое, отформатированное так, чтобы его можно было просто скопировать и вставить в макрос. Каждая команда находится в одной строке. У вас может быть несколько команд, которые выполняются последовательно:

/run for i=0,0 do local instanceName, instanceDesc, backgroundTexture, buttonTexture, titleBackground, mapID, instanceLink = EJ_GetSearchResult(i); if mapID then print(i,instanceName, mapID) end end
/dump GetLFGDungeonInfo(20)

Вот принятый ответ снова:

for i=1,GetNumGuildMembers() do
    local name, rank = GetGuildRosterInfo(i)
    if rank == "The rank you're iterested in" then
        GuildDemote(name)
    end
end

Здесь он отформатирован для вставки в макрос:

/run for i=1,GetNumGuildMembers() do local name, rank = GetGuildRosterInfo(i); if rank == "The rank you're iterested in" then GuildDemote(name) end end

Обратите внимание на симиколон ';' между двумя операторами в одном блоке на одной строке. Это хорошая практика для того, чтобы сделать код однозначным и немного более легким для чтения.

person Celess    schedule 26.08.2013