-
Постов
178 -
Зарегистрирован
-
Посещение
-
Победитель дней
24
Сообщения, опубликованные Nurkz
-
-
В ../src/map/instance.c функция instance_mapname2mapid переписывает название карты в вид ("%d#%s", instance_id, iname) - в вашем случае "13#bossnia_01" так как не может найти символ @ в названии карты. В следствии чего, функция pc_setpos не может найти mapindex карты 13#bossnia_01 и отсылает вас на 1 в списке, а это у нас alb_ship
Либо создаем копии карт bossnia_01 вида 1@bossnia_01, либо 13#bossnia_01, либо меняем эту строку :
snprintf(alt_name, sizeof(alt_name),"%d#%s", instance_id, iname);на
snprintf(alt_name, sizeof(alt_name),"%s", iname);- 1
-
pc_additem(vsd, &sd->status.inventory[idx],0,LOG_TYPE_STEAL); // Добавили данную позицию покупателю
pc_delitem(sd,idx,qty,0,0,LOG_TYPE_STEAL); // Удалили позицию у продавцаЭто то верно?
pc_additem(vsd, &sd->status.inventory[idx], qty, 0); // Добавили данную позицию покупателю
pc_delitem(sd, idx, qty, 0, 6, 0); // Удалили позицию у продавца- 1
-
Поменяй эти строки :
+ pc_getzeny(sd,(int)z);
+ pc_getzeny(vsd,-((int)z));- 1
-
убиваю и рейтинг не обновился
А скрипт самого рейтинга можно? В db добавили новую таблицу?
-
интересует как удалить.
Он удаляется автоматически, если в нем нет участников.
-
хотя остался интерес как же открыть чат после распределение скил поинтов
Заходим в ../src/map/pc.c и в функции pc_skillup в самом конце добавляем:
if( (sd->class_&MAPID_UPPERMASK) == MAPID_NOVICE && sd->status.job_level == 10 && sd->status.skill_point == 0 )
npc_event(sd,"<npc name>::<npc event>",0);- 1
-
работает но, чат с нпц не появляется как прокачевашь скилы. приходится перезаходить. что бы появился чат.
Логично, срабатывает только при OnPCLoginEvent.
после получение профессии персонаж виснет)
Попробуй сменить end; на close;
-
- script jobs -1,{
OnPCLoginEvent:
if( !Class && JobLevel == 10 )
{
switch(select("swordman")) // меню выбора профессии
{
case 1: // swordman
atcommand "@job 1"; //Job Swordman id 1
dispbottom "Вы получили профессию Swordman.";
break;
default:
break;
}
}
end;
}- 1
-
- script jobs -1,{
OnPCLoginEvent:
// проверка на Job Id
if(Class > 0 && Class < 4049)
end;
//проверака на lvl Job
if(JobLevel < 10) goto case 1;
if(JobLevel > 9) goto case 2;
case 1:
switch(Class){
switch(select("swordman")) // меню выбора профессии
next;
atcommand "@job 1"; //Job Swordman id 1
dispbottom "Вы получили профессию Swordman.";
close;
case 2:
mes "извините вы ещё не достигни необходимого джоб уровня
close;
}
}
я неуверен что без ошибок но должно помочь
-
чем плох переход по лейбел?
int a = rand()%100;
if (a>50) goto LOL;
int b=rand()%100;
LOL:
std::cout << a << b << std::endl;Каким образом при выборке из чисел <= 100(101) ты получаешь число выше границы?
Или что это за число и как оно считается
суть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 30% от 10000 запросов)
-
Всё ясно с вами.
-
Сам себе противоречишь.
Давай по пальцам: rand()%10 вернет нам 10 возможных результатов, включая 0.
1 результат : 0
2 результат : 1
3 результат : 2
4 результат : 3
5 результат : 4
6 результат : 5
7 результат : 6
8 результат : 7
9 результат : 8
10 результат : 9И естественно по той же схеме rand()%101 вернет нам 101 возможный результат.
Математик хренов..
-
При использовании 'rand(101)' в итоге мы получаем 101 возможный результат, если при 10000 эту 1 ты и не заметишь, то при значении 100 это уже играет роль.
Хотя какая разница, может это задумка автора, чтоб шансов поболее было. =)
- 1
- 1
-
case HW_GANBANTEIN:
{
int i;
for(i = 0; i < MAX_INVENTORY; i++)
{
if(sd->status.inventory[i].nameid == 25008)
{
req.itemid[0] = 25008;
req.amount[0] = 1;
}
if(sd->status.inventory[i].nameid == 25010)
{
req.itemid[1] = 25010;
req.amount[1] = 1;
}
}
}
break;- 1
-
А что вы вообще делаете, где, и главное, зачем?
- 1
-
Есть ли такая возможность менять спрайт вещи при заточке ?
вполне..
добавить в item_data новый state, и выдать наш state нужному предмету.
A дальше условие в pc_equipitem : если у предмета есть наш state, меняем ему look на который хотим..
В вашем случае :
if(id->state.changelook_state)
{
switch(id->refine)
{
case 1: id->look = XXX; break;
case 2: ...
}
}Где XXX нужный вам View ID.
- 1
-
switch(Class)
{
case 4015: getitem 607, 10; break;
case 4016: getitem 607, 20; break;
default: break;
}- 1
-
Проще. Сила привычки она такая, да х)
P.S. А чем временные переменные, которые после разговора с НПЦ уничтожатся вдруг помешали? О.о
В принципе ни чем не мешают, опять же, сила привычки.
Привык к тому, что под каждую переменную выделяется память, и лишние переменные которые нигде не использованы, наводят панику.
Как говорится, "Оптимизация превыше всего".
-
OnPCLoadMapEvent:
getmapxy(.@map$, .@x, .@y, 0);
if ( .@map$ != "prontera") {
if (countitem(601) > 0)
delitem 601, countitem(601);
}
end;При смене карты проверяет название текущей карты у игрока. Если карта - НЕ пронтера, проверяет количество предметов с айди 601 в инвентаре. Если их больше 0, то забирает все, что есть. Если мне память не изменяет, для использования OnPCLoadMapEvent должен на всех картах стоять мапфлаг loadevent или как-то так.
А не проще использовать strcharinfo(3) ? Зачем лишние переменные?
-
#1 - Can't create/write to file './ragnarok/db.opt' (Errcode: 2)
Вместо `ragnarok` нужно вписать название вашей db.
ALTER DATABASE `(ваша db)` COLLATE `utf8_bin` -
SQL запрос в базу.
- 1
-
prontera,146,83,5 script Хилер -1,7,7,{
end;
OnTouch:
if( HD > gettimetick(2) )
end;
set HD, gettimetick(2)+180;
while(getbrokenid(1))
repair(1);
percentheal 100,100;
specialeffect2 42;
sc_start SC_BLESSING,300000,10;
specialeffect2 37;
sc_start SC_INCREASEAGI,300000,10;
sc_start SC_MAGNIFICAT,300000,5;
sc_end sc_stone;
sc_end sc_freeze;
sc_end sc_sleep;
sc_end sc_curse;
sc_end sc_silence;
sc_end sc_confusion;
sc_end sc_blind;
sc_end sc_bleeding;
emotion 21;
getinventorylist;
for(set .@i,0; .@i<@inventorylist_count; set .@i,.@i+1)
{
if(@inventorylist_identify[.@i]==1)
continue;
delitem2 @inventorylist_id[.@i],1,0,0,0,0,0,0,0;
getitem @inventorylist_id[.@i],1;
}
end;
}- 1
-
так понимаю в дб дело. надо как вы сказали кодировку поменять?
Попробуйте.
ALTER DATABASE `ragnarok` COLLATE `utf8_bin`- 1
-
А где именно искать?
То что вам нужно лежит в (папка с клиентом игры)/data/texture/(какие-то иероглифы)/basic_interface/
Обычно игровой интерфейс находится в grf файле.
Баг с instance_enter
в Вопросы, ошибки и баги
Опубликовано
насчет instance_mapname2mapid, убери instance_id в передаваемых значениях на строку :
snprintf(alt_name, sizeof(alt_name),"%s", instance_id, iname);
насчет skill.c
у тебя i может вылезти за рамки максимального значения массива
В db/map_index.txt и conf/maps_athena.conf добавил? Mapcache пересобирал?