Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дополнения > Скрипты

Важная информация

Скрипты ScriptDev2

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.03.2010, 12:03   #1
tozter
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 32
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
tozter На верном пути
По умолчанию Как проверить наличие предмета у игрока?

Надо проверить, есть предмет в заданном количестве или нет.
Как это сделать?
tozter вне форума   Ответить с цитированием
Старый 23.03.2010, 12:16   #2
PSZ
Ученый
 
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
PSZ Обладатель прекрасной аурыPSZ Обладатель прекрасной ауры
По умолчанию

Код:
Player->HasItemCount()
PSZ вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
tozter (23.03.2010), Wish (24.03.2010)
Старый 23.03.2010, 14:18   #3
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Тему создавать новую незачем.
Подскажите, как определить всех персонажей в определённой группе (через for(), естественно), если известен только id группы?

Код:
Group* pGroup = pPlayer->GetGroup();
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next())
{
	if(Player* pMember = pRef->getSource())
	{
	if(pMember->IsInWorld() && pMember->isAlive())
	pMember->Relocate(x,y,z,o);
	}
}
Вот мне хочется что-то наподобие этого.
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет

Последний раз редактировалось Hantet; 23.03.2010 в 15:20.
Hantet вне форума   Ответить с цитированием
Старый 24.03.2010, 16:07   #4
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Hantet Посмотреть сообщение
Тему создавать новую незачем.
Подскажите, как определить всех персонажей в определённой группе (через for(), естественно), если известен только id группы?

Код:
Group* pGroup = pPlayer->GetGroup();
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next())
{
	if(Player* pMember = pRef->getSource())
	{
	if(pMember->IsInWorld() && pMember->isAlive())
	pMember->Relocate(x,y,z,o);
	}
}
Вот мне хочется что-то наподобие этого.
Старайтесь использовать 1 тему на 1 вопрос.
Но я отвечу на ваш вопрос, что вам мешает итерировать саму группу по членам группы?
Anti вне форума   Ответить с цитированием
Старый 24.03.2010, 17:02   #5
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Цитата:
Сообщение от Anti Посмотреть сообщение
Старайтесь использовать 1 тему на 1 вопрос.
Но я отвечу на ваш вопрос, что вам мешает итерировать саму группу по членам группы?
Благодарю за ответ.
Я смогу её итерировать по членам группы только тогда, когда смогу опознать саму группу. Сейчас я владею только числом, с которым никаких действий производить невозможно.

Было бы что-то наподобие:
Код:
Group* pGroup = GetGroupLink(777);
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next())
{
... /*действия с участниками группы*/
}
}
Где 777 - номер группы. (функцию GetGroupLink придумал от балды, чтобы просто нагляднее было).

Помогите, пожалуйста.
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет
Hantet вне форума   Ответить с цитированием
Старый 24.03.2010, 18:27   #6
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Hantet Посмотреть сообщение
Благодарю за ответ.
Я смогу её итерировать по членам группы только тогда, когда смогу опознать саму группу. Сейчас я владею только числом, с которым никаких действий производить невозможно.

Было бы что-то наподобие:
Код:
Group* pGroup = GetGroupLink(777);
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next())
{
... /*действия с участниками группы*/
}
}
Где 777 - номер группы. (функцию GetGroupLink придумал от балды, чтобы просто нагляднее было).

Помогите, пожалуйста.
Ну вы были близки, а я немного переусердствовал. Хотя я думаю внесение метода переноса всей группы к опр координатам имеет место быть, но это реализовано несколько иначе.

Посмотрите ChatHandler::HandleGroupgoCommand
Anti вне форума   Ответить с цитированием
Старый 25.03.2010, 09:05   #7
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Да, спасибо, но я всё таки нашёл тот заветный метод в коде (и кстати, мои догадки были очень близки):
Код:
Group* pGroup = sObjectMgr.GetGroupById(777);
for(pRef=pGroup->GetFirstMember();pRef!=NULL;pRef=pRef->next())
{
  if(Player* pMember = pRef->getSource())
  {
    pMember->SetHealth(pMember->GetMaxHealth());
    if(pMember->getPowerType() == POWER_MANA)
    pMember->SetPower(POWER_MANA, pMember->GetMaxPower(POWER_MANA));
    pMember->RemoveAllSpellCooldown();
    if(pMember->IsInWorld())
    pMember->TeleportTo(m,x,y,z,o);
  }
}
Данный кусок кода извлекает из БД (памяти?) всех персонажей, находящихся в группе под номером 777, восстанавливает им хп, ману, кд, и телепортирует по координатам x,y,z,o на карте m.

Всем спасибо.
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет
Hantet вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
MuTaToR (25.03.2010)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить состояние игрока, зная его GUID? tozter Скрипты 27 08.11.2010 18:50
Как сделать продажу моего предмета за эмблемы льда? Foxen Новичкам 3 31.08.2010 20:15
Передвижения мобов в отсутствие игрока brainreaver Корзина 3 05.08.2010 14:22


Текущее время: 20:59. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot