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

Elmiria

Проверенные
  • Постов

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

  • Посещение

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

    18

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

  1. Elmiria

    Смещение shortcut макросов

    Есть несколько проблем с клиентом, которые мне не удалось решить. Первая и самая неприятная - это смещение клавиш макросов. То есть, например, в меню альт+м на макросе альт+2 стоит @autoloot, но при нажатии альт+2 срабатывает макрос альт+3, и чтобы сработал альт2 нужно нажимать альт1 (надеюсь понятно объясняю) Грешила на луа, но сейчас стоят луа, чуть старше моего экзешника (на мой экзе не было луа 2010-11-16а) Вторая проблема, проявляется не у всех игроков, а только у избранных. Не сохраняются эти самые макросы и введенный логин. У меня эта проблема тоже была и неизвестным образом решилась. Так как клиент у всех один, есть подозрение на отсутствие каких-то компонентов, которые у неизбранных есть, так как есть другие клиенты ро. (хотя у меня они всегда были) Куда копать - даже не представляю. Третья проблема самая странная. Не выйти из РО. Никогда ранее с таким не сталкивалась. Если попытаться выйти из ро, то экран потемнеет (на темном фоне еще будет видно последний экран ро) и можно только альттабится на винду, что не принесет почти никаких результатов (окно не свернуть, и оно поверх всех окон) Происходит всегда, полноэкранный режим. (в оконном режиме не тестировалось(скорей всего это беда полноэкранки только), наличие у всех или у части игроков неизвестно) Есть способ обойти беду. Но работает тоже не на 100% - перейти на раб стол и закрыть не разворачивая окно, иногда ро снимается оставляя за собой хвост процесса, который не снять. ПС. что за ерунда такая на вин7 не все процессы можно снять. То есть они предупреждают все дела, и ничего, процесс остается. Ладно бы критичный процесс, но нет же...
  2. Безмерно благодарна. Если б еще ачивки не по-порядку можно было получать, ценыб этому скрипту не было! Все работает, никаких ошибок, все старые достижения сохранились, даблов нет, всегда и вовремя)
  3. ребят, не растерзайте меня) я еще жить хочу. Вечером погляжу на ваши скрины, скрипты... Много желающих помочь набралось)
  4. Буду с нетерпением ждать окончания рабочего дня, чтоб посмотреть на результат)
  5. нене мой косяк, я про нее забыла)
  6. подожди как нет? была ж. да она есть, я про нее забыла с таблице char гм меню работала. согласна, но если нет варианта лучше... поэтому и написала сюда
  7. да, там второй файл пустой.
  8. вот http://yadi.sk/d/aTK1e0X6DydkW
  9. Loki Archievment script же. Он работает но через одно место. В прошлой моей теме было обсуждение и сам скрипт.
  10. медленно схожу с ума...

  11. Elmiria

    Достижения

    Требуется рабочий скрипт на получение достижений желательно без модификаций ресурсов сервера. Требования - получение достижений должно быть своевременным и не должно повторяться. То есть двойного получения быть не должно ни при каких условиях. За основу можно взять любой удобный для работы скрипт, также может быть написан с нуля. Типы достижений которые мне нужны: мобы, базовый уровень, профессиональный уровень, мвп, пвп. (по сути основные, но не все) Я сейчас использую скрипт от локи, но он по определенным требованиям не подходит. Дедлайн 20-25 декабря, о вознаграждении договоримся. Писать либо сюда (в тему, в личку), либо ВК millia_rage в крайнем случае (в скайп не отвечу)
  12. Хотелось бы верить. с работой полмесяца сразу можно выкинуть, под Новый Год уже не до сервера будет, да и дому тоже надо время уделять. + предстоящий в этом месяце ремонт... так что времени остается полчаса в день, ну и что я успею?) да ничего) Если есть люди, которые смогу довести этот (или другой) скрипт до работоспособности без двойного получения ачивы и чтоб они начислялись правильно и вовремя (за базовый уровень вообще не даются ачивы теперь) я в долгу не останусь.
  13. К сожалению, сейчас нет возможности переписать сам скрипт на более понятный и правильный язык, берем что есть. Но до Нового года он должен хоть как-то заработать адекватно.
  14. так AND char_id='"+getcharid(0)+"'",.@id); или AND char_id="+getcharid(0), .@id); я еще путаюсь... Непись перестал работать о_О
  15. Даже так ачивки дают не по одному разу. Засоряет чат, хоть приз второй раз и не начисляет. Ачивка желопи у меня работает только на порингах, получила ее за дропса х_х, Скрипт очень сложный для выявления ошибок логики, но либо их править либо выкидывать скрипт на помойку. Спасибо за варнинги - их теперь нет, жаль, но основная проблема с ними не решилась. Либо спамит ачивами, либо вообще их не начисляет. Поглядела в базу - 14 записей о ачивке желопи на последнего тестового персонажа. Скрипт просто не видит предыдущих записей? о_О id ach_id char_id crdate 435 1 150106 1386444699 434 1 150106 1386444652 433 1 150106 1386444619 432 1 150106 1386444590 431 1 150106 1386444575 430 1 150106 1386444560 429 1 150106 1386444543 428 1 150106 1386444523 427 1 150106 1386444499 426 1 150106 1386444486 425 1 150106 1386444478 422 1 150106 1386444161 421 1 150106 1386444085 420 1 150106 1386444054 424 7 150106 1386444478 423 7 150106 1386444426 419 7 150106 1386443674 query_sql("SELECT id FROM achievement_log WHERE ach_id='"+.@achieveId+"' AND char_id='"+.@achieveId+"'",.@id); if(.@id>0) { setd("a_done_"+.@achieveId,1); end; } //User already got this achievement... Strange оно?
  16. Скрипт на достижения постоянно выводит ошибки. Скрипт читала, но не могу понять что ему не нравится, переменные вроде все соответсвуют. Вывод сервера такой (всегда примерно это выдает в бешеном количестве) [Warning]: Unexpected type for argument 1. Expected string. [Debug]: Data: variable name='$a_sval_6' index=0 [Debug]: Function: dispbottom [Debug]: Source (NPC): achievementSystem (invisible/not on a map) [Info]: Saved guild (5 - Emperium): members [Warning]: Unexpected type for argument 1. Expected string. [Debug]: Data: variable name='$a_sval_4' index=0 [Debug]: Function: dispbottom [Debug]: Source (NPC): achievementSystem (invisible/not on a map) [Warning]: Unexpected type for argument 1. Expected string. [Debug]: Data: variable name='$a_sval_5' index=0 [Debug]: Function: dispbottom [Debug]: Source (NPC): achievementSystem (invisible/not on a map) [Warning]: Unexpected type for argument 1. Expected string. [Debug]: Data: variable name='$a_sval_6' index=0 [Debug]: Function: dispbottom [Debug]: Source (NPC): achievementSystem (invisible/not on a map) Вывод в глобальный чат Fenix got the achievement [Желопи!]! Fenix got the achievement [Желопи!]! Fenix got the achievement [Желопи!]! Fenix got the achievement [Желопи!]! Сам скрипт: //===== Athena Script ===================================== //= Achievement System //===== By ================================================ //= Loki1991 //===== Version =========================================== //= 1.0 - First release //= 1.0.1 - Small hotfix for older rathena/eathena systems //===== Description ======================================= //= A full working Achivement System without any source edit! //= A well guide about this script can be found in rathena! //========================================================= - script achievementSystem -1,{ OnInit: //config start set $a_cache_expire,120; set $a_effect_id,908; set $a_cutin_delay,8000; //config end. Don't change anything below if you don't know what ya doing set $a_cached,0; end; //Cache achivements for .@cache_expire secounds OnPCLoginEvent: if(gettimetick(2)-$a_cached <= $a_cache_expire && $a_cached != 0) goto InventoryChecker; query_sql("SELECT * FROM achievement",.@id,.@name$,.@desc$,.@mode,.@deleted$,.@cutin$,.@points,.@single_val,.@val1,.@val1amount,.@val2,.@val2amount,.@val3,.@val3amount,.@val4,.@val4amount,.@val5,.@val5amount,.@val6,.@val6amount,.@val7,.@val7amount,.@val8,.@val8amount,.@val9,.@val9amount); set .@i,0; set $a_mode_other,0; set $a_mode_item,0; set $a_mode_mob,0; set $a_mode_mvp,0; set $a_mode_pvp,0; set $a_mode_lvl,0; set $a_mode_jlvl,0; while(.@i < getarraysize(.@id)) { setd("$a_name_"+.@id[.@i]+"$",.@name$[.@i]); setd("$a_desc_"+.@id[.@i]+"$",.@desc$[.@i]); setd("$a_mode_"+.@id[.@i],.@mode[.@i]); setd("$a_del_"+.@id[.@i]+"$",.@deleted$[.@i]); setd("$a_cutin_"+.@id[.@i]+"$",.@cutin$[.@i]); setd("$a_points_"+.@id[.@i],.@points[.@i]); setd("$a_val1_"+.@id[.@i],.@val1[.@i]); setd("$a_val1a_"+.@id[.@i],.@val1amount[.@i]); setd("$a_val2_"+.@id[.@i],.@val2[.@i]); setd("$a_val2a_"+.@id[.@i],.@val2amount[.@i]); setd("$a_val3_"+.@id[.@i],.@val3[.@i]); setd("$a_val3a_"+.@id[.@i],.@val3amount[.@i]); setd("$a_val4_"+.@id[.@i],.@val4[.@i]); setd("$a_val4a_"+.@id[.@i],.@val4amount[.@i]); setd("$a_val5_"+.@id[.@i],.@val5[.@i]); setd("$a_val5a_"+.@id[.@i],.@val5amount[.@i]); setd("$a_val6_"+.@id[.@i],.@val6[.@i]); setd("$a_val6a_"+.@id[.@i],.@val6amount[.@i]); setd("$a_val7_"+.@id[.@i],.@val7[.@i]); setd("$a_val7a_"+.@id[.@i],.@val7amount[.@i]); setd("$a_val8_"+.@id[.@i],.@val8[.@i]); setd("$a_val8a_"+.@id[.@i],.@val8amount[.@i]); setd("$a_val9_"+.@id[.@i],.@val9[.@i]); setd("$a_val9a_"+.@id[.@i],.@val9amount[.@i]); setd("$a_sval_"+.@id[.@i],.@single_val[.@i]); switch(.@mode[.@i]) { default: set $a_mode_other,$a_mode_other+1; break; case 1: set $a_mode_item,$a_mode_item+1; break; case 2: set $a_mode_mob,$a_mode_mob+1; break; case 3: set $a_mode_mvp,$a_mode_mvp+1; break; case 4: set $a_mode_pvp,$a_mode_pvp+1; break; case 5: set $a_mode_lvl,$a_mode_lvl+1; break; case 6: set $a_mode_jlvl,$a_mode_jlvl+1; break; } set .@i,.@i+1; } set $achive_amount, .@i; set $a_cached,gettimetick(2); end; //Monsterkills (mode mob,mvp) OnNPCKillEvent: //killedrid if($a_mode_mob>0 || $a_mode_mvp>0) { set .@i,0; while(.@i < $achive_amount) { set .@i,.@i+1; if((getd("$a_mode_"+.@i)!=2 && getd("$a_mode_"+.@i)!=3) || getd("a_done_"+.@i)==1 || getd("$a_del_"+.@i+"$")=="y") continue; if(getd("$a_mode_"+.@i)==2 && $a_mode_mob > 0 && achieve_mob < $a_mode_mob) { set .@valCount,0; set .@ok,0; while(.@valCount < 9) { set .@valCount,.@valCount+1; if(getd("$a_val"+.@valCount+"_"+.@i)==0 || getd("$a_val"+.@valCount+"a_"+.@i)==0) { set .@ok,.@ok+1; continue; } //Skip trash or empty if(killedrid == getd("$a_val"+.@valCount+"_"+.@i)) setd("a_state_"+.@i+"_"+.@valCount,getd("a_state_"+.@i+"_"+.@valCount) + 1); if(getd("a_state_"+.@i+"_"+.@valCount) == getd("$a_val"+.@valCount+"a_"+.@i)) set .@ok,.@ok+1; } if(.@ok == 9) callfunc "achieve",.@i; } else if(getd("$a_mode_"+.@i)==3 && $a_mode_mvp > 0 && achieve_mvp < $a_mode_mvp) { switch(killedrid) { default: break; case 1511: case 1647: case 1785: case 1630: case 1929: case 1039: case 1874: case 1272: case 1719: case 1046: case 1389: case 1112: case 1115: case 1957: case 1418: case 1871: case 1252: case 1768: case 1086: case 1649: case 1651: case 1832: case 1492: case 1734: case 1251: case 1779: case 1688: case 1646: case 1373: case 1147: case 1059: case 1150: case 1956: case 1087: case 1190: case 1038: case 1157: case 1159: case 1502: case 1623: case 1650: case 1583: case 1708: case 1312: case 1751: case 1685: case 1648: case 1917: case 1658: case 1885: case 2068: case 2238: case 2240: case 2236: case 2241: case 1980: case 2156: case 2022: case 2235: case 2237: case 2087: case 2165: case 2239: setd("a_state_"+.@i,getd("a_state_"+.@i) + 1); if(getd("a_state_"+.@i) >= getd("$a_sval_"+.@i)) callfunc "achieve",.@i; break; } } } } goto InventoryChecker; end; //PvP (mode pvp) OnPCKillEvent: if($a_mode_pvp==0 || achieve_pvp==$a_mode_pvp) end; set pvp_counter,pvp_counter+1; set .@i,0; while(.@i < $achive_amount) { set .@i,.@i+1; if(getd("$a_mode_"+.@i)!=4 || getd("a_done_"+.@i)==1 || getd("$a_del_"+.@i+"$")=="y") continue; if(pvp_counter >= getd("$a_sval_"+.@i)) callfunc "achieve",.@i; } end; //LevelUP (mode lvl) OnPcBaseLvUpEvent: if($a_mode_lvl==0 || achieve_lvl==$a_mode_lvl) end; set .@i,0; while(.@i < $achive_amount) { setd("a_done_"+.@i,0); set .@i,.@i+1; if(getd("$a_mode_"+.@i) !=5 || getd("a_done_"+.@i)==1 || getd("$a_del_"+.@i+"$")=="y") continue; dispbottom getd("$a_sval_"+.@i); if(BaseLevel >= getd("$a_sval_"+.@i)) callfunc "achieve",.@i; } end; //JobLevelUP (mode jlvl) OnPcJobLvUpEvent: if($a_mode_jlvl==0 || achieve_jlvl==$a_mode_jlvl) end; set .@i,0; while(.@i < $achive_amount) { set .@i,.@i+1; if(getd("$a_mode_"+.@i)!=6 || getd("a_done_"+.@i)==1 || getd("$a_del_"+.@i+"$")=="y") continue; if(JobLevel >= getd("$a_sval_"+.@i)) callfunc "achieve",.@i; } end; //Get X Amount of Items in your inventar (mode item) //will be called after mob kill or map change InventoryChecker: if($a_mode_item==0 || achieve_item==$a_mode_item) end; set .@i,0; while(.@i < $achive_amount) { set .@i,.@i+1; if(getd("$a_mode_"+.@i) !=1 || getd("a_done_"+.@i)==1 || getd("$a_del_"+.@i+"$")=="y") continue; set .@valCount,0; set .@ok,0; while(.@valCount < 9) { set .@valCount,.@valCount+1; if(getd("$a_val"+.@valCount+"_"+.@i)==0 || getd("$a_val"+.@valCount+"a_"+.@i)==0) { set .@ok,.@ok+1; continue; } //Skip trash or empty if(countitem(getd("$a_val"+.@valCount+"_"+.@i)) >= getd("$a_val"+.@valCount+"a_"+.@i)) set .@ok,.@ok+1; } if(.@ok == 9) callfunc "achieve",.@i; } end; //special (mode special) //No script. Just place 'callfunc "achieve",<<yourAchievementId>>;' anywhere in your script (below). } function script achieve { set .@achieveId,getarg(0); if(.@achieveId <= 0) end; //Param missing. WTF query_sql("SELECT id FROM achievement_log WHERE ach_id='"+.@achieveId+"' AND char_id='"+.@achieveId+"'",.@id); if(.@id>0) { setd("a_done_"+.@achieveId,1); end; } //User already got this achievement... Strange //Everything looks fine, lets do it query_sql("INSERT INTO achievement_log(ach_id,char_id,crdate) VALUES('"+.@achieveId+"','"+getcharid(0)+"','"+gettimetick(2)+"')"); switch(getd("$a_mode_"+.@achieveId)) { default: set achieve_other,achieve_other+1; break; case 1: set achieve_item,achieve_item+1; break; case 2: set achieve_mob,achieve_mob+1; break; case 3: set achieve_mvp,achieve_mvp+1; break; case 4: set achieve_pvp,achieve_pvp+1; break; case 5: set achieve_lvl,achieve_lvl+1; break; case 6: set achieve_jlvl,achieve_jlvl+1; break; } if($a_effect_id>0) { specialeffect2 $a_effect_id; } announce strcharinfo(0)+" got the achievement ["+getd("$a_name_"+.@achieveId+"$")+"]!",0; setd("a_done_"+.@achieveId,1); query_sql("UPDATE `char` SET achievement_points=achievement_points+"+getd("$a_points_"+.@achieveId)+" WHERE char_id="+getcharid(0)); getitem 7711,getd("$a_points_"+.@achieveId); if(getd("$a_cutin_"+.@achieveId+"$") != "") { cutin getd("$a_cutin_"+.@achieveId+"$"),1; sleep2 $a_cutin_delay; cutin "",255; } end; } function script getMonsterNameById { if(getarg(0)<=0) end; query_sql("SELECT iName FROM mob_db WHERE ID="+getarg(0)+" UNION SELECT iName FROM mob_db2 WHERE ID="+getarg(0),.@mobName$); return .@mobName$; } pron_mall,124,126,4 script AchievementBob 899,{ //Bob Config Params set .@name$,"[^FF0000Achiement Bob^000000]"; set .@cutin$,"sc_vicente01"; set .@GmMenuAtWhichLevel,40; set .@text_gmMenu$,"Hi there GM. Which kind of menu do you want to see?"; set .@text_startInfo$,"I have all information about the achievements which are activated on this server."; set .@text_category$,"Please choose your category."; set .@text_whichAch$,"For which achievement do you want to get details?"; set .@text_points$,"You have this achievement points:"; set .@text_close$,"I'm not interested."; set .@text_worth$,"Worth:"; set .@text_getPoints$,"points"; set .@text_bye$,"Have a nice day."; set .@text_kill$,"Kill"; set .@text_mvp$,"any kind of MvP"; set .@text_pvp$,"any other player"; set .@text_lvl$,"Reach base level"; set .@text_jlvl$,"Reach job level"; set .@text_mode_item$,"Item achievements"; set .@text_mode_mob$,"Monster achievements"; set .@text_mode_mvp$,"MvP achievements"; set .@text_mode_pvp$,"PvP achievements"; set .@text_mode_lvl$,"Base Level achievements"; set .@text_mode_jlvl$,"Job Level achievements"; set .@text_mode_other$,"Other Achievements"; query_sql("SELECT achievement_points FROM `char` WHERE char_id="+getcharid(0),.@points); //Check if a gm has set the player to a force action query_sql("SELECT ach_id, mode FROM achievement_force WHERE done='n' AND char_id="+getcharid(0),.@ach_id,.@mode$); if(getarraysize(.@ach_id) > 0) { set .@i,0; while(.@i < getarraysize(.@ach_id)) { //Clear log before there is to much trash inside query_sql("SELECT id FROM achievement_log WHERE ach_id="+.@ach_id[.@i]+" AND char_id="+getcharid(0),.@log_id); query_sql("UPDATE achievement_force SET done='y' WHERE done='n' AND ach_id="+.@ach_id[.@i]+" AND char_id="+getcharid(0)); if(.@log_id > 0) query_sql("DELETE FROM achievement_log WHERE id="+.@log_id); if(.@mode$=="add") { if(getd("a_done_"+.@ach_id[.@i]) == 1) { query_sql("UPDATE `char` SET achievement_points=achievement_points-"+getd("$a_points_"+.@ach_id[.@i])+" WHERE char_id="+getcharid(0)); } setd("a_done_"+.@ach_id[.@i],0); callfunc "achieve",.@ach_id[.@i]; } else { query_sql("SELECT mode FROM achievement WHERE id="+.@ach_id[.@i],.@mode); if(.@mode == 2) { set .@j,0; while(.@j < 9) { set .@j,.@j+1; setd("a_state_"+.@ach_id[.@i]+"_"+.@j,0); } } else if(.@mode == 3) { setd("a_state_"+.@ach_id[.@i],0); } if(getd("a_done_"+.@ach_id[.@i]) == 1) { query_sql("UPDATE `char` SET achievement_points=achievement_points-"+getd("$a_points_"+.@ach_id[.@i])+" WHERE char_id="+getcharid(0)); } setd("a_done_"+.@ach_id[.@i],0); dispbottom "Achievement "+getd("$a_name_"+.@ach_id[.@i]+"$")+" was removed!"; } set .@i,.@i+1; } } //Start the true script cutin .@cutin$,2; //If a gm talks to this npc, call the gm menu, else the normal script if(getgmlevel() >= .@GmMenuAtWhichLevel) { mes .@name$; mes .@text_gmMenu$; next; menu "GM Menu",L_GM,"Player Menu",-,.@text_close$,L_end; } mes .@name$; mes .@text_startInfo$; next; mes .@name$; mes .@text_points$+" ^00AA00"+.@points+"^000000"; mes .@text_category$; next; set .@i,0; if($a_mode_other > 0) { set .@menu$,.@menu$+.@text_mode_other$+":"; setarray .@tempAr1[.@i],0; set .@i,.@i+1; } if($a_mode_item > 0) { set .@menu$,.@menu$+.@text_mode_item$+":"; setarray .@tempAr1[.@i],1; set .@i,.@i+1; } if($a_mode_mob > 0) { set .@menu$,.@menu$+.@text_mode_mob$+":"; setarray .@tempAr1[.@i],2; set .@i,.@i+1; } if($a_mode_mvp > 0) { set .@menu$,.@menu$+.@text_mode_mvp$+":"; setarray .@tempAr1[.@i],3; set .@i,.@i+1; } if($a_mode_pvp > 0) { set .@menu$,.@menu$+.@text_mode_pvp$+":"; setarray .@tempAr1[.@i],4; set .@i,.@i+1; } if($a_mode_lvl > 0) { set .@menu$,.@menu$+.@text_mode_lvl$+":"; setarray .@tempAr1[.@i],5; set .@i,.@i+1; } if($a_mode_jlvl > 0) { set .@menu$,.@menu$+.@text_mode_jlvl$+":"; setarray .@tempAr1[.@i],6; set .@i,.@i+1; } if(.@i == 0) { mes .@name$; mes "Woot. No Achivements found."; cutin "",255; close; } set .@menu$,.@menu$+.@text_close$; set .@choose,select(.@menu$); set .@choose,.@choose-1; if( .@choose == .@i) goto L_end; next; mes .@name$; mes .@text_whichAch$; set .@i,0; set .@j,0; set .@menu$,""; while(.@i < $achive_amount) { set .@i,.@i+1; if(getd("$a_mode_"+.@i) != .@tempAr1[.@choose] || getd("$a_del_"+.@i+"$")=="y") continue; if(getd("a_done_"+.@i) == 1) { set .@menu$,.@menu$+"^00AA00"; } else { set .@menu$,.@menu$+"^FF0000"; } set .@menu$,.@menu$+getd("$a_name_"+.@i+"$")+" ["+getd("$a_points_"+.@i)+"]^000000"+":"; setarray .@tempAr2[.@j],.@i; set .@j,.@j+1; } set .@menu$,.@menu$+.@text_close$; set .@choose2,select(.@menu$); set .@choose2,.@choose2-1; if( .@choose2 == .@j) { next; goto L_end; } next; mes .@name$; if(getd("$a_desc_"+.@tempAr2[.@choose2]+"$") != "") { mes getd("$a_desc_"+.@tempAr2[.@choose2]+"$"); next; mes .@name$; } mes "^0000AA"+.@text_worth$+" "+getd("$a_points_"+.@tempAr2[.@choose2])+" "+.@text_getPoints$+"^000000"; if(.@tempAr1[.@choose] > 0) { if(.@tempAr1[.@choose] == 1 || .@tempAr1[.@choose] == 2) { set .@i,0; while(.@i < 9) { set .@i,.@i+1; if(getd("$a_val"+.@i+"_"+.@tempAr2[.@choose2])>0 && getd("$a_val"+.@i+"a_"+.@tempAr2[.@choose2])>0) { if(.@tempAr1[.@choose] == 1) { mes "^0000AA"+getitemname(getd("$a_val"+.@i+"_"+.@tempAr2[.@choose2]))+" ["+countitem(getd("$a_val"+.@i+"_"+.@tempAr2[.@choose2]))+"/"+getd("$a_val"+.@i+"a_"+.@tempAr2[.@choose2])+"]^000000"; } else { mes "^0000AA"+.@text_kill$+" "+callfunc("getMonsterNameById",getd("$a_val"+.@i+"_"+.@tempAr2[.@choose2]))+" ["+getd("a_state_"+.@tempAr2[.@choose2]+"_"+.@i)+"/"+getd("$a_val"+.@i+"a_"+.@tempAr2[.@choose2])+"]^000000"; } } } } else { if(.@tempAr1[.@choose] == 3) mes "^0000AA"+.@text_kill$+" "+getd("$a_sval_"+.@tempAr2[.@choose2])+" "+.@text_mvp$+" ["+getd("a_state_"+.@tempAr2[.@choose2])+"/"+getd("$a_sval_"+.@tempAr2[.@choose2])+"]^000000"; if(.@tempAr1[.@choose] == 4) mes "^0000AA"+.@text_kill$+" "+getd("$a_sval_"+.@tempAr2[.@choose2])+" "+.@text_pvp$+" ["+pvp_counter+"/"+getd("$a_sval_"+.@tempAr2[.@choose2])+"]^000000"; if(.@tempAr1[.@choose] == 5) mes "^0000AA"+.@text_lvl$+" "+getd("$a_sval_"+.@tempAr2[.@choose2])+" ["+BaseLevel+"/"+getd("$a_sval_"+.@tempAr2[.@choose2])+"]^000000"; if(.@tempAr1[.@choose] == 6) mes "^0000AA"+.@text_jlvl$+" "+getd("$a_sval_"+.@tempAr2[.@choose2])+" ["+JobLevel+"/"+getd("$a_sval_"+.@tempAr2[.@choose2])+"]^000000"; } } next; goto L_end; L_GM: mes .@name$; mes .@text_category$; next; switch(select("Force Player Achievement","Enable/Disable Achievements","Clear cache","Compare log with achivement points",.@text_close$)) { case 1: mes .@name$; mes "If the player you write here talks to this npc, you can set some actions which will happen, for example get a achivement or revoke a achivement."; mes "What is the name of the player?"; next; input .@char_name$; next; mes .@name$; query_sql("SELECT char_id FROM `char` WHERE name='"+.@char_name$+"'",.@char_id); if(.@char_id > 0) { mes "Which achivement?"; next; set .@i,0; set .@j,0; set .@menu$,""; while(.@i < $achive_amount) { set .@i,.@i+1; if(getd("$a_del_"+.@i+"$") == "y") continue; set .@menu$,.@menu$+getd("$a_name_"+.@i+"$")+":"; set .@j,.@j+1; setarray .@tempAr1[.@j],.@i; } set .@menu$,.@menu$+.@text_close$; set .@choose,select(.@menu$); if( .@choose == .@j+1) goto L_GM; next; mes .@name$; mes "Adding or removing this achivement?"; next; switch(select("Add","Remove",.@text_close$)) { case 1: set .@mode$,"add"; break; case 2: set .@mode$,"del"; break; case 3: goto L_GM; break; } next; mes .@name$; mes "Player: "+.@char_name$; mes "Achivement: "+getd("$a_name_"+.@tempAr1[.@choose]+"$")+" (id="+.@tempAr1[.@choose]+")"; mes "Mode: "+.@mode$; mes "Are you sure?"; next; menu "Yes!",-,"No",L_GM; mes .@name$; query_sql("INSERT INTO achievement_force(ach_id,char_id,mode) VALUES('"+.@tempAr1[.@choose]+"','"+.@char_id+"','"+.@mode$+"')"); if(.@mode$=="del") { switch(getd("$a_mode_"+.@tempAr1[.@choose])) { default: set achieve_other,achieve_other-1; break; case 1: set achieve_item,achieve_item-1; break; case 2: set achieve_mob,achieve_mob-1; break; case 3: set achieve_mvp,achieve_mvp-1; break; case 4: set achieve_pvp,achieve_pvp-1; break; case 5: set achieve_lvl,achieve_lvl-1; break; case 6: set achieve_jlvl,achieve_jlvl-1; break; } } mes "Action added! "+.@char_name$+" should talk to me now!"; next; } else { mes "Player not found!"; next; } goto L_GM; break; case 2: mes .@name$; mes "Red=disabled, green=enabled"; mes "Be carefull on your achivements you added without triggers (mode 0). If you don't check there if the achivement is deleted, it may cause problems"; set .@i,0; set .@menu$,""; while(.@i < $achive_amount) { set .@i,.@i+1; if(getd("$a_del_"+.@i+"$") == "n") { set .@menu$,.@menu$+"^00AA00"; } else { set .@menu$,.@menu$+"^FF0000"; } set .@menu$,.@menu$+getd("$a_name_"+.@i+"$")+"^000000:"; } set .@menu$,.@menu$+.@text_close$; next; set .@choose,select(.@menu$); if(.@choose <= .@i) { if(getd("$a_del_"+.@choose+"$") == "n") { set .@updateTo$,"y"; } else { set .@updateTo$,"n"; } query_sql("UPDATE achievement SET deleted='"+.@updateTo$+"' WHERE id="+.@choose); dispbottom "Achivement "+getd("$a_name_"+.@choose+"$")+" updated to deleted='"+.@updateTo$+"'!"; dispbottom "Clear Cache to see any effects!!!"; goto L_GM; } break; case 3: set $a_cached,0; dispbottom "Cache remove Flag has been set. When the next player login, the cache will be cleared"; goto L_GM; break; case 4: //if you build in something like "For 100 achivement points get 1 Cookie", this function would be buggy! query_sql("SELECT char_id,achievement_points,name FROM `char`",.@char_id,.@ach_points,.@char_name$); set .@i,0; dispbottom "Sync started!"; while(.@i < getarraysize(.@char_id)) { cleararray .@ach_id[0],0,getarraysize(.@ach_id); query_sql("SELECT ach_id FROM achievement_log WHERE char_id="+.@char_id[.@i],.@ach_id); set .@j,0; set .@points,0; while(.@j < getarraysize(.@ach_id)) { set .@points,.@points+getd("$a_points_"+.@ach_id[.@j]); set .@j,.@j+1; } if(.@ach_points[.@i] != .@points) { query_sql("UPDATE `char` SET achievement_points="+.@points+" WHERE char_id="+.@char_id[.@i]); dispbottom .@char_name$[.@i]+" had "+.@ach_points[.@i]+" points, but should have "+.@points+" points. Fixed!"; } set .@i,.@i+1; } dispbottom "Sync done!"; goto L_GM; break; case 5: break; } goto L_end; L_end: mes .@name$; mes .@text_bye$; close2; cutin "",255; end; }
  17. ну тип того, тольго не в Ж а в мозг, причем посредством исключительно игроков.
  18. ээм... но коммент. Смотрим на сайт сами.
  19. он есть, но недосягаем( и я надеюсь у меня есть возможность его получить. Категорическое нет гармошке) у меня есть способ борьбы с читами даже без античита о_О вот как... не реализован. Называется тоталитарный режим о_О XDD
  20. Напряг понемногу спал - и возвращается желание заниматься сервером. Сайт заказан и почти нарисован дизайн, надеюсь мне его скоро наверстают. Заказала доработку склада, и сама понемногу добиваю последние пункты. DEADLINE 30 декабря. посмотрим, успею ли я) Игроки, набор которых начал мой помощник, трясут с меня гарантии, что сервер будет защищенным, и не умрет после первого читака. Гармошку не хочу. Хочу магнум, (и не надо мне говорить про обман, это мое решение, а не вы впариваете мне некачественный товар)
  21. а что тут описывать? тут одно слово dm все разъясняет.
  22. я не против ipboardа но, вопрос в цене... я вообще не в курсе есть ли они бесплатные ил все за крупную денюжку. В принципе отдельно можно хранить, но не понимаю зачем? в чем соль, они становятся уязвимостями сервера?
  23. по поводу дропа с мвп - 6 лет играла на сервер где дроп с мвп х3. причем постоянно ходили фамить нужных. И что? одна карта упала - и та, которая по сути с первой нашей мвп этого вида (и не была особо интересна). Я не хотела сделать сервер задротов (извиняйте за слово, но другого слова комьюнити не придумало) Все равно после достижения лампы все идут бить шмот и карты, в том числе и мвп. Тут стоит вопрос о времени. Далеко не каждый уже готов неделями бить одну и ту же карту. Он ее все равно выбьет, только сколько сил и терпения потратит? Ну это мое мнение, и если оно ошибочно, свою кашу расхлебывать буду сама Про форум: пхпбб - чем он плох? разве айпиборд не платный? где форум хранить (на отдельной машине? еще платить? т_т ) Я готова потратиться еще на дизайн сайта, и возможно на доработку склада Сана (где сортировка по броне и ускорение переноса вещи при примененной сортировки, Сан? ты ж обещал) я не говорю про админку, ее не было в тз изначальном), но это разово, боюсь на еще один хост у меня зарплаты не хватит) Кстати, как сделать чтоб во флюксе показывались картинки предметов? либо я дураг, либо слеп >_<
  24. Вечером обязательно напишу, сейчас на работе(
  25. Я не ставлю прибыль целью проекта. Изначальная цель вообще смешна, и со временем она изменилась, но не об этом речь. Просто пожелайте мне удачи, сил и терпения сделать все так как я хочу, закончить проект и выпустить в свет.
×
×
  • Создать...
Яндекс.Метрика