// Evol scripts. // Author: // 4144 // Description: // test npc1 test,10,10,0 script npc1#door NPC_HIDDEN,0,1,{ OnTouch: warp "test", 20, 20; close; OnUnTouch: doevent "npc1::OnUnTouch"; } test,10,10,0 script npc1 NPC_TEST1,3,3,{ function areatest { mesn; mes "getareausers(\"test\", 7, 7, 13, 13): " + getareausers("test", 7, 7, 13, 13); mes "getareausers(7, 7, 13, 13): " + getareausers(7, 7, 13, 13); mes "getareausers(\"test\"): " + getareausers("test"); mes "getareausers(): " + getareausers(); mes "getareausers(\"test\", 1): " + getareausers("test", 1); mes "getareausers(1): " + getareausers(1); next; return; } L_Start: switch (select( "show area", "map", "pc", "change npc direction", "quest test", "cart", "items", "chat", "wall", "craft", "hashtable", "instance", "mercenary", "npc", "clan")) { case 1: areatest; break; case 2: while(1) { .@mask = getmapmask("test"); mes "current mask: " + str(.@mask); switch (select("show sand:show grass:show fog:hide fog:back")) { case 1: addremovemapmask "test", 4, 8; break; case 2: addremovemapmask "test", 8, 4; break; case 3: addmapmask "test", 2; break; case 4: removemapmask "test", 2; break; case 5: goto L_Start; break; } } break; case 3: while(1) { switch (select("change sex:setmount 0:setmount 1:setmount 2:test command:back")) { case 1: changecharsex; break; case 2: setmount 0; break; case 3: setmount 1; break; case 4: setmount 2; break; case 5: clientcommand "emote 1"; break; case 6: goto L_Start; break; } } break; case 4: for (.@f = 0; .@f < 9; .@f ++) { mes "" + .@f; .dir = .@f; next; } break; case 5: mes "current"; .@val1 = getq(ShipQuests_Gugli); .@val2 = getq2(ShipQuests_Gugli); .@val3 = getq3(ShipQuests_Gugli); .@valTime = getqtime(ShipQuests_Gugli); mes "val1=" + .@val1; mes "val2=" + .@val2; mes "val3=" + .@val3; mes "valTime=" + .@valTime; .@val1 ++; .@val2 ++; .@val3 ++; .@valTime ++; next; mes "test " + str(.@val1) + ", " + str(.@val2) + ", " + str(.@val3) + ", " + str(.@valTime); setq ShipQuests_Gugli, .@val1, .@val2, .@val3, .@valTime; next; .@val1 = getq(ShipQuests_Gugli); .@val2 = getq2(ShipQuests_Gugli); .@val3 = getq3(ShipQuests_Gugli); .@valTime = getqtime(ShipQuests_Gugli); mes "val1=" + .@val1; mes "val2=" + .@val2; mes "val3=" + .@val3; mes "valTime=" + .@valTime; break; case 6: while(1) { switch (select("add cart:remove cart:back")) { case 1: setcart 1; break; case 2: setcart 0; break; case 3: goto L_Start; break; } } break; case 7: while(1) { switch (select("refine", "rent", "bound", "named", "cards", "options", "back")) { case 1: .@item = -1; while(1) { switch (select("set item", "refine +1", "refine -1", "refine fail", "back")) { case 1: .@item = requestitemindex(); mes "Item index selected: " + str(.@item); break; case 2: successrefindex .@item, 1; break; case 3: downrefindex .@item, 1; break; case 4: failedrefindex .@item; break; case 5: goto L_Start; break; } } break; case 2: while(1) { switch (select("rent vneck for 10 seconds", "rent vneck for 30 seconds", "rent vneck for 1 minute", "rent vneck for 5 minutes", "back")) { case 1: rentitem 1301, 10; break; case 2: rentitem 1301, 30; break; case 3: rentitem 1301, 60; break; case 4: rentitem 1301, 300; break; case 5: goto L_Start; break; } } break; case 3: while(1) { switch (select("get bound vneck", "back")) { case 1: getitembound2 1301, 1, 1, 0, 0, 0, 0, 0, 0, 1; break; case 2: goto L_Start; break; } } break; case 4: while(1) { switch (select("get named vneck", "back")) { case 1: getnameditem 1301, "4144"; break; case 2: goto L_Start; break; } } break; case 5: .@item = -1; while(1) { switch (select("set item", "remove cards success", "fail, remove both", "fail, remove card", "fail, remove item", "fail, safe", "print all", "remove 0", "back")) { case 1: .@item = requestitemindex(); mes "Item index selected: " + str(.@item); break; case 2: successremovecardsindex .@item; break; case 3: failedremovecardsindex .@item, 0; break; case 4: failedremovecardsindex .@item, 1; break; case 5: failedremovecardsindex .@item, 2; break; case 6: failedremovecardsindex .@item, 3; break; case 7: mes "slots=" + str(MAX_SLOTS); for (.@i = 0; .@i < MAX_SLOTS; .@i++) { mes "slot " + str(.@i) + " = " + str(getcardbyindex(.@item, .@i)); } mes "item options:"; for (.@i = 0; .@i < 5; .@i ++) { mes sprintf("%d: Option: %d, Value: %d", .@i, getitemoptionidbyindex(.@item, .@i), getitemoptionvaluebyindex(.@item, .@i)); } break; case 8: removecardbyindex(.@item, 0); break; case 9: goto L_Start; break; } } break; case 6: .@item = -1; while(1) { switch (select("set item", "info", "set option 1", "remove options", "back")) { case 1: .@item = requestitemindex(); mes "Item index selected: " + str(.@item); break; case 2: mes "Selected item options"; for (.@i = 0; .@i < 5; .@i ++) { mes sprintf("%d: Option: %d, Value: %d", .@i, getitemoptionidbyindex(.@item, .@i), getitemoptionvaluebyindex(.@item, .@i)); } break; case 3: setitemoptionbyindex(.@item, 0, VAR_MAXHPAMOUNT, 200); setitemoptionbyindex(.@item, 1, VAR_STRAMOUNT, 10); setitemoptionbyindex(.@item, 2, VAR_VITAMOUNT, -5); break; case 4: mes "Remove item options"; for (.@i = 0; .@i < 5; .@i ++) { setitemoptionbyindex(.@item, .@i, 0, 0); } break; case 5: goto L_Start; break; } } break; case 7: goto L_Start; break; } } break; case 8: chatjoin .chat; close; case 9: while(1) { switch (select("set wall 1:set wall 2:set wall 3:delete wall 1:delete wall 2:delete wall 3:back")) { case 1: setcells "test", 14, 11, 17, 11, 3, "wall1"; break; case 2: setcells "test", 14, 7, 21, 8, 1, "wall2"; break; case 3: setcells "test", 13, 15, 13, 21, 3, "wall3"; break; case 4: delcells "wall1"; break; case 5: delcells "wall2"; break; case 6: delcells "wall3"; break; case 7: goto L_Start; break; } } break; case 10: while(1) { switch (select("technical:normal:back")) { case 1: setskin "test2"; .@var$ = requestcraft(9); mes .@var$; .@craft = initcraft(.@var$); mes "craft id: " + str(.@craft); mes "is craft valid: " + validatecraft(.@craft); .@id = getcraftslotid(.@craft, 0); .@amount = getcraftslotamount(.@craft, 0); mes "first item id: " + .@id; mes "first item name: " + getitemlink(.@id); mes "first item amount: " + .@amount; .@id = getcraftslotid(.@craft, 1); .@amount = getcraftslotamount(.@craft, 1); mes "second item id: " + .@id; mes "second item name: " + getitemlink(.@id); mes "second item amount: " + .@amount; // dumpcraft .@craft; .@entry = findcraftentry(.@craft, 0); mes "found craft entry: " + .@entry; if (.@entry < 0) { mes "no craft recipe found"; } else { mes "use craft"; usecraft .@craft; mes "return code: " + getcraftcode(.@entry); } deletecraft .@craft; setskin ""; break; case 2: mes "put items what you want to craft"; setskin "test2"; .@var$ = requestcraft(9); setskin ""; .@craft = initcraft(.@var$); if (.@craft < 0) { mes "Craft error."; goto L_Start; } mes "lets see what you can get..."; next; if (!validatecraft(.@craft)) { mes "inventory was changed."; goto L_Start; } .@entry = findcraftentry(.@craft, 0); if (.@entry < 0) { mes "no craft recipe found"; } else { mes "found recipe"; usecraft .@craft; mes "return code: " + getcraftcode(.@entry); } deletecraft .@craft; break; case 3: goto L_Start; break; } } break; case 11: switch(select("Create new hashtable", "Use existing ID")) { case 1: .@ht = htnew(); mes "ID = " + .@ht; break; case 2: mes "Input ID"; input .@ht; break; } .@defval = 0; .@defval_str$ = ""; .@newval = 0; .@newval_str$ = ""; .@key$ = ""; while(1) { switch (select("Set default string value", "Set default number value", "Get string", "Get number", "Put string", "Put number", "Show hashtable", "Clear hashtable", "Delete hashtable", "Exit")) { case 1: input .@defval_str$; break; case 2: input .@defval; break; case 3: mes "Input key:"; input .@key$; mes "htget(" + .@ht + ", \"" + .@key$ + "\") = " + htget(.@ht, .@key$); mes "htget(" + .@ht + ", \"" + .@key$ + "\", \"" + .@defval_str$ + "\") = " + htget(.@ht, .@key$, .@defval_str$); break; case 4: mes "Input key:"; input .@key$; mes "htget(" + .@ht + ", \"" + .@key$ + "\") = " + htget(.@ht, .@key$); mes "htget(" + .@ht + ", \"" + .@key$ + "\", " + .@defval + ") = " + htget(.@ht, .@key$, .@defval); break; case 5: mes "Input key:"; input .@key$; mes "Input value:"; input .@newval_str$; htput(.@ht, .@key$, .@newval_str$); mes "htput(" + .@ht + ", \"" + .@key$ + "\", \"" + .@newval_str$ + "\")"; mes "htget(" + .@ht + ", \"" + .@key$ + "\") = " + htget(.@ht, .@key$); break; case 6: mes "Input key:"; input .@key$; mes "Input value:"; input .@newval; htput(.@ht, .@key$, .@newval); mes "htput(" + .@ht + ", \"" + .@key$ + "\", " + .@newval + ")"; mes "htget(" + .@ht + ", \"" + .@key$ + "\") = " + htget(.@ht, .@key$); break; case 7: mes "size = " + htsize(.@ht); .@hti = htiterator(.@ht); for(.@key$ = htinextkey(.@hti); hticheck(.@hti); .@key$ = htinextkey(.@hti)) mes "key = " + .@key$ + " value = " + htget(.@ht, .@key$); htidelete(.@hti); break; case 8: htclear(.@ht); mes "htclear(" + .@ht + ")"; break; case 9: htdelete(.@ht); mes "htdelete(" + .@ht + ")"; break; case 10: goto L_Start; } // switch } // while break; case 12: while(1) { switch (select("create", "warp", "info", "warp back", "delete", "back")) { case 1: if (.instid >= 0 && isinstance(.instid)) { mes "Error: test instance already created"; break; } // .instid = instance_create("test@instance", 0, 0); .instid = instance_create("test@instance", getcharid(3), IOT_CHAR); if (.instid < 0) { mes "Error: creating instance"; break; } mes "new instance id: " + str(.instid); // .@instanceMapName$ = instance_attachmap("test", .instid, 1, "test@map1"); // .@instanceMapName$ = instance_attachmap("test", .instid, 1); .@instanceMapName$ = instance_attachmap("test", .instid, 0, "test@map1"); if (.@instanceMapName$ == "") { mes "Error: instance attach map error"; break; } mes "Attached instance map name: " + .@instanceMapName$; instance_set_timeout(1000000, 1000000, .instid); instance_init(.instid); break; case 2: warp "test@map1", 12, 12; break; case 3: mes "npc name: " + .name$; mes "npc ext name: " + .extname$; mes "npc id: " + .id; mes "npc parent id: " + .parent; mes "npc src id: " + .srcId; if (instance_id() >= 0) { mes "npc1 in instance named: " + instance_npcname("npc1"); } else { mes "npc1 not in instance"; } break; case 4: warp "test", 12, 12; break; case 5: if (.instid < 0) { mes "Error: test instance was not created"; break; } instance_destroy(.instid); break; case 6: goto L_Start; break; } } break; case 13: while(1) { switch (select("create mercenary for 10 seconds", "create mercenary for 1 min", "create mercenary for 10 min", "back")) { case 1: mercenary_create 1191, 10000; break; case 2: mercenary_create 1191, 60000; break; case 3: mercenary_create 1191, 600000; break; case 4: goto L_Start; break; } } break; case 14: while(1) { switch (select("set hair 1", "set hair 0", "equip vneck", "unequip vneck", "back")) { case 1: setunitdata(.@npcId, UDT_HAIRSTYLE, 5); setunitdata(.@npcId, UDT_HAIRCOLOR, 17); break; case 2: .@npcId = getnpcid("npc4"); setunitdata(.@npcId, UDT_HAIRSTYLE, 0); break; case 3: .@npcId = getnpcid("npc4"); setunitdata(.@npcId, UDT_HEADTOP, 1301); break; case 4: .@npcId = getnpcid("npc4"); setunitdata(.@npcId, UDT_HEADTOP, 0); break; case 5: goto L_Start; break; } } break; case 15: while(1) { switch (select( "join sword clan", "join arc wand clan", "join golden mace clan", "join crossbox clan", "leave clan", "back")) { case 1: mes(str(clan_join(1))); break; case 2: mes(str(clan_join(2))); break; case 3: mes(str(clan_join(3))); break; case 4: mes(str(clan_join(4))); break; case 5: mes(str(clan_leave())); break; case 6: goto L_Start; break; } } break; } close; OnTouch: doorTouch; OnUnTouch: doorUnTouch; OnTimer340: doorTimer; OnInit: .sex = GENDER_HIDDEN; .distance = 5; .alwaysVisible = true; waitingroom "test room", 2, "npc1::OnReadyCheck", 1; // test instance id .instid = -10; if (.parent != 0) { setnpcdir 0; } end; OnWhisperGlobal: mes "cmd: " + @whispervar0$; close; OnReadyCheck: consolemes(CONSOLEMES_DEBUG, "OnReadyCheck"); $@bgid1 = waitingroom2bg("testbg", 10, 10, "bgnpc1::OnLogout","bgnpc1:OnDie"); consolemes(CONSOLEMES_DEBUG, "bgid=" + str($@bgid1)); setbgteam $@bgid1, 1; bg_warp $@bgid1, "testbg", 10, 10; }