Перейти к содержанию

Nurkz

Donators
  • Постов

    178
  • Зарегистрирован

  • Посещение

  • Победитель дней

    24

Весь контент Nurkz

  1. Как вариант : int instance_mapname2mapid(const char *name, short instance_id) { struct instance_data *im; int m = map_mapname2mapid(name); char iname[MAP_NAME_LENGTH]; int i; if(m < 0) { ShowError("instance_mapname2mapid: map name %s does not exist.\n",name); return -1; } strcpy(iname,name); if(instance_id <= 0 || instance_id > MAX_INSTANCE_DATA) return -1; im = &instance_data[instance_id]; if(im->state != INSTANCE_BUSY) return -1; for(i = 0; i < MAX_MAP_PER_INSTANCE; i++) { if(im->map[i].src_m == m) { return map_mapname2mapid(iname); } } return -1; } Попробуй.. Я вообще офигел от того, что они там наворотили с этими инстансами..
  2. насчет instance_mapname2mapid, убери instance_id в передаваемых значениях на строку : snprintf(alt_name, sizeof(alt_name),"%s", instance_id, iname); насчет skill.c у тебя i может вылезти за рамки максимального значения массива if( i < MAX_SKILL_ITEM_REQUIRE && req.itemid[i] ) req_item = req.itemid[i]; В db/map_index.txt и conf/maps_athena.conf добавил? Mapcache пересобирал?
  3. В ../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);
  4. pc_additem(vsd, &sd->status.inventory[idx], qty, 0); // Добавили данную позицию покупателю pc_delitem(sd, idx, qty, 0, 6, 0); // Удалили позицию у продавца
  5. Поменяй эти строки : + pc_getzeny(sd,(int)z); + pc_getzeny(vsd,-((int)z));
  6. А скрипт самого рейтинга можно? В db добавили новую таблицу?
  7. Он удаляется автоматически, если в нем нет участников.
  8. Заходим в ../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);
  9. Логично, срабатывает только при OnPCLoginEvent. Попробуй сменить end; на close;
  10. - 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; }
  11. int a = rand()%100; if (a>50) goto LOL; int b=rand()%100; LOL: std::cout << a << b << std::endl;
  12. Сам себе противоречишь. Давай по пальцам: 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 возможный результат. Математик хренов..
  13. При использовании 'rand(101)' в итоге мы получаем 101 возможный результат, если при 10000 эту 1 ты и не заметишь, то при значении 100 это уже играет роль. Хотя какая разница, может это задумка автора, чтоб шансов поболее было. =)
  14. 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;
  15. А что вы вообще делаете, где, и главное, зачем?
  16. вполне.. добавить в 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.
  17. switch(Class) { case 4015: getitem 607, 10; break; case 4016: getitem 607, 20; break; default: break; }
  18. В принципе ни чем не мешают, опять же, сила привычки. Привык к тому, что под каждую переменную выделяется память, и лишние переменные которые нигде не использованы, наводят панику. Как говорится, "Оптимизация превыше всего".
  19. А не проще использовать strcharinfo(3) ? Зачем лишние переменные?
  20. Вместо `ragnarok` нужно вписать название вашей db. ALTER DATABASE `(ваша db)` COLLATE `utf8_bin`
  21. 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; }
×
×
  • Создать...
Яндекс.Метрика