Jump to content

n0tttt

Members
  • Posts

    303
  • Joined

  • Days Won

    12

Everything posted by n0tttt

  1. Forgot the amount. Just change it to: .@id = monster("prontera",150,150,"Poring",1002,1);
  2. I don't know if this will be useful for your or not. - script Monster_Walk -1,{ OnInit: .@id = monster("prontera",150,150,"Poring",1002); setarray .@path[0], 155,150, 155,155, 160,155, 165,160; .@size = getarraysize(.@path); while(true) { unitwalk .@id,.@path[.@i*2],.@path[.@i*2 + 1]; .@i = (.@i + 2)%.@size; sleep 1200; } end; }
  3. As of now, there isn't a script command to retrieve the timer or the hunted amount of a given mob in a quest. There's only checkquest(<id>,PLAYTIME) or checkquest(<id>,HUNTING) which only retrieves if the timer has been reached, or if the amount has been hunted. It'd be useful to have a command which returns the sd->quest_log[id].time parameter or sd->quest_log.count[j] This way there wouldn't be a need for variables like etower_timer, and this would be useful to retrieve this info instantly for multiple specified quests. Here's what I propose: *getquestinfo(<quest>,<type>{,<mob id>{,<char_id>}) Returns the quest information of the given character. Valid info types: PLAYTIME: returns the internal timer of the quest. HUNTING: returns the amount of <mob id> already hunted. Examples: mes "You've hunted "+getquestinfo(60301,HUNTING,1155)+" Petit."; .@timer = getquestinfo(60200,PLAYTIME); mes "You still have to wait "+Time2Str(.@wait)+" to enter Endless Tower again."; And here's a little snippet to check instance timers easily, which would be one of the main uses of this type of command I think. setarray .@instance$[0],"Endless Tower","Sealed Catacomb"; setarray .@quest_id[0],60200,3040; setarray .@status$[0],"Unavaiaible","990000","Avaiaible","009900"; for(.@size = getarraysize(.@instance$);.@i < .@size;.@i++) { .@time$ = ""; .@status = checkquest(.@quest_id[.@i],PLAYTIME); .@status = .@status == -1 || .@status == 2; if(.@status) { .@timer = getquestinfo(.@quest_id[.@i],PLAYTIME); .@time$ = Time2Str(.@timer); } dispbottom .@instance$[.@i]+": "+.@status$[.@status*2]+" "+.@time$+".","0x"+.@status$[.@status*2 + 1]; } end;
  4. You can't with that mapflag, but if you know how to recompile then you can do this. pc.cpp, change: if( !battle_config.pk_mode && mapdata->flag[MF_PVP] && !mapdata->flag[MF_PVP_NOCALCRANK] ) { sd->pvp_point -= 5; sd->pvp_lost++; if( src && src->type == BL_PC ) { struct map_session_data *ssd = (struct map_session_data *)src; ssd->pvp_point++; ssd->pvp_won++; } if( sd->pvp_point < 0 ) { add_timer(tick+1000, pc_respawn_timer,sd->bl.id,0); return 1|8; } } to: if( !battle_config.pk_mode && mapdata->flag[MF_PVP] && !mapdata->flag[MF_PVP_NOCALCRANK] ) { sd->pvp_point -= 5; sd->pvp_lost++; if( src && src->type == BL_PC ) { struct map_session_data *ssd = (struct map_session_data *)src; ssd->pvp_point++; ssd->pvp_won++; } } With this change you can just use pvp mapflag instead of pvp_nocalcrank and players won't be respawned. The counter will also remain.
  5. Yeah, with pvp_nocalcrank mapflag you'll avoid that.
  6. It's %, not a fixed amount. Check the examples: // MC_MAMMONITE,BL_PC,1,50 // In normal maps, players deal +50% damage to other players with Mammonite. // MO_EXTREMITYFIST,BL_PC,6,-50 // In PVP and GVG, players deal -50% (half) damage to other players with Asura Strike. // AB_ADORAMUS,BL_PC,6,50,0,10,15 // In PVP and GVG, players deal +50% damage to other players, +0% to mobs, +10% to bosses, and +15% to other with Adoramus.
  7. Use pvp_nocalcrank mapflag.
  8. https://rathena.org/board/topic/111269-guide-lightweight-compiler-for-windows-for-replacement-heavy-visual-studio-ide-compile-rathena-faster-save-your-bandwidth-and-disk-space/
  9. First change #define MAX_LEVEL 175 in map.hpp and then recompile. Then edit db/import/job_exp.txt to your liking.
  10. I don't know if this will work but I don't lose anything trying... Change: case WL_TETRAVORTEX: if( sd && sc ) { // No SC? No spheres int spheres[5] = { 0, 0, 0, 0, 0 }, positions[5] = {-1,-1,-1,-1,-1 }, i, j = 0, k, subskill = 0; for( i = SC_SPHERE_1; i <= SC_SPHERE_5; i++ ) if( sc->data[i] ) { spheres[j] = i; positions[j] = sc->data[i]->val2; j++; } // Sphere Sort, this time from new to old for( i = 0; i <= j - 2; i++ ) for( k = i + 1; k <= j - 1; k++ ) if( positions[i] < positions[k] ) { SWAP(positions[i],positions[k]); SWAP(spheres[i],spheres[k]); } if(j == 5) { // If 5 spheres, remove last one and only do 4 actions (Official behavior) status_change_end(src, static_cast<sc_type>(spheres[4]), INVALID_TIMER); j = 4; } k = 0; for( i = 0; i < j; i++ ) { // Loop should always be 4 for regular players, but unconditional_skill could be less switch( sc->data[spheres[i]]->val1 ) { case WLS_FIRE: subskill = WL_TETRAVORTEX_FIRE; k |= 1; break; case WLS_WIND: subskill = WL_TETRAVORTEX_WIND; k |= 4; break; case WLS_WATER: subskill = WL_TETRAVORTEX_WATER; k |= 2; break; case WLS_STONE: subskill = WL_TETRAVORTEX_GROUND; k |= 8; break; } skill_addtimerskill(src, tick + i * 200, bl->id, k, 0, subskill, skill_lv, i, flag); clif_skill_nodamage(src, bl, subskill, skill_lv, 1); status_change_end(src, static_cast<sc_type>(spheres[i]), INVALID_TIMER); } } break; to: case WL_TETRAVORTEX: if( sd && sc ) { // No SC? No spheres int spheres[5] = { 0, 0, 0, 0, 0 }, positions[5] = {-1,-1,-1,-1,-1 }, i, j = 0, k, subskill = 0; for( i = SC_SPHERE_1; i <= SC_SPHERE_5; i++ ) if( sc->data[i] ) { spheres[j] = i; positions[j] = sc->data[i]->val2; j++; } // Sphere Sort, this time from new to old for( i = 0; i <= j - 2; i++ ) for( k = i + 1; k <= j - 1; k++ ) if( positions[i] < positions[k] ) { SWAP(positions[i],positions[k]); SWAP(spheres[i],spheres[k]); } if(j == 5) { // If 5 spheres, remove last one and only do 4 actions (Official behavior) status_change_end(src, static_cast<sc_type>(spheres[4]), INVALID_TIMER); j = 4; } k = 0; for( i = 0; i < j; i++ ) { // Loop should always be 4 for regular players, but unconditional_skill could be less switch( sc->data[spheres[i]]->val1 ) { case WLS_FIRE: subskill = WL_TETRAVORTEX_FIRE; k |= 1; break; case WLS_WIND: subskill = WL_TETRAVORTEX_WIND; k |= 4; break; case WLS_WATER: subskill = WL_TETRAVORTEX_WATER; k |= 2; break; case WLS_STONE: subskill = WL_TETRAVORTEX_GROUND; k |= 8; break; } skill_addtimerskill(src, tick + i * 200, bl->id, k, 0, subskill, skill_lv, i, flag); clif_skill_nodamage(src, bl, subskill, skill_lv, 1); status_change_end(src, static_cast<sc_type>(spheres[i]), INVALID_TIMER); } } else if(!sd) { int k; for( i = 0; i < 4; i++ ) { switch( i ) { case 0: subskill = WL_TETRAVORTEX_FIRE; k |= 1; break; case 1: subskill = WL_TETRAVORTEX_WIND; k |= 4; break; case 2: subskill = WL_TETRAVORTEX_WATER; k |= 2; break; case 3: subskill = WL_TETRAVORTEX_GROUND; k |= 8; break; } skill_addtimerskill(src, tick + i * 200, bl->id, k, 0, subskill, skill_lv, i, flag); clif_skill_nodamage(src, bl, subskill, skill_lv, 1); } } break;
  11. It's on by default by now. Also be sure to use last rAthena, the parsing was fixed in this commit: https://github.com/rathena/rathena/commit/2d4a59494803d15e9674b383688b9203d7123c68
  12. npc/re/scripts_athena.conf Just change: to:
  13. //===== rAthena Script ======================================= //= Healer //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Basic healer script. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Aligned coordinates with @go. //============================================================ - script Healer -1,{ .@Price = 0; // Zeny required for heal .@Buffs = 0; // Also buff players? (1: yes / 0: no) .@Delay = 0; // Heal delay, in seconds if (@HD > gettimetick(2)) { message strcharinfo(0),"You need to wait "+Time2Str(@HD)+" before using this service again."; end; } if (.@Price) { message strcharinfo(0), "Healing costs " + callfunc("F_InsertComma",.@Price) + " Zeny."; if (Zeny < .@Price) end; if (select("^0055FFHeal^000000:^777777Cancel^000000") == 2) end; Zeny -= .@Price; } specialeffect2 EF_HEAL2; percentheal 100,100; if (.@Buffs) { specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,240000,10; specialeffect2 EF_BLESSING; sc_start SC_BLESSING,240000,10; } if (.@Delay) @HD = gettimetick(2) + .@Delay; end; } // Duplicates //============================================================ alberta,25,240,6 duplicate(Healer) Healer#alb 909 aldebaran,135,118,6 duplicate(Healer) Healer#alde 909 amatsu,200,79,4 duplicate(Healer) Healer#ama 909 ayothaya,207,169,6 duplicate(Healer) Healer#ayo 909 comodo,184,158,6 duplicate(Healer) Healer#com 909 einbech,57,36,6 duplicate(Healer) Healer#einbe 909 einbroch,57,202,6 duplicate(Healer) Healer#einbr 909 geffen,115,72,6 duplicate(Healer) Healer#gef 909 gonryun,156,122,6 duplicate(Healer) Healer#gon 909 hugel,89,150,6 duplicate(Healer) Healer#hug 909 izlude,121,150,6 duplicate(Healer) Healer#izl 909 //Pre-RE: (125,118) jawaii,250,139,4 duplicate(Healer) Healer#jaw 909 lighthalzen,152,100,6 duplicate(Healer) Healer#lhz 909 louyang,226,103,4 duplicate(Healer) Healer#lou 909 manuk,272,144,6 duplicate(Healer) Healer#man 909 mid_camp,203,289,6 duplicate(Healer) Healer#mid 909 moc_ruins,72,164,4 duplicate(Healer) Healer#moc 909 morocc,153,97,6 duplicate(Healer) Healer#mor 909 moscovia,220,191,4 duplicate(Healer) Healer#mos 909 niflheim,212,182,5 duplicate(Healer) Healer#nif 909 payon,179,106,4 duplicate(Healer) Healer#pay 909 prontera,162,193,4 duplicate(Healer) Healer#prt 909 rachel,125,116,6 duplicate(Healer) Healer#rac 909 splendide,201,153,4 duplicate(Healer) Healer#spl 909 thor_camp,249,74,4 duplicate(Healer) Healer#thor 909 umbala,105,148,3 duplicate(Healer) Healer#umb 909 veins,217,121,4 duplicate(Healer) Healer#ve 909 xmas,143,136,4 duplicate(Healer) Healer#xmas 909 yuno,164,45,4 duplicate(Healer) Healer#yuno 909 // Duplicates (Renewal) //============================================================ brasilis,194,221,6 duplicate(Healer) Healer#bra 909 dewata,195,187,4 duplicate(Healer) Healer#dew 909 dicastes01,201,194,4 duplicate(Healer) Healer#dic 909 ecl_in01,45,60,4 duplicate(Healer) Healer#ecl 909 malangdo,132,114,6 duplicate(Healer) Healer#mal 909 malaya,227,204,6 duplicate(Healer) Healer#ma 909 mora,55,152,4 duplicate(Healer) Healer#mora 909
  14. Don't know if works. //===== rAthena Script ======================================= //= PvP log //===== By: ================================================== //= Vietlubu //===== Description: ========================================= //= Simple SQL PvP log //= Notes: //= - Create table `pvplog` when start script. //= - Add new record when has OnPCKillEvent //= - Remove NCP PvP Ranking if you don't want to use. //===== Compatible With: ===================================== //= rAthena Project //===== Changelogs: ========================================== //= 1.0 First version. //============================================================ prontera,155,181,5 script PvP Ranking 430,{ .@limitRanking = 3; .@limitEnemies = 3; mes "[PvP Ranking]"; //menu "Ranking of month", L_RankMonth, "Ranking of week", L_RankWeek, "Ranking of day", L_RankDay; select "Ranking of month", "Ranking of week", "Ranking of day", "My enemies"; if (@menu < 4) { // Ranking switch(@menu) { case 1: .@ranking$ = "MONTH"; .@message$ = "Ranking of month"; break; case 2: .@ranking$ = "WEEK"; .@message$ = "Ranking of week"; break; case 3: .@ranking$ = "DAY"; .@message$ = "Ranking of day"; break; } query_sql("SELECT `char`.`id``char`.`name`, COUNT(`char`.`name`) AS count_kill FROM `pvplog` INNER JOIN `char` ON `char`.`char_id` = `pvplog`.`killer_id` WHERE " + .@ranking$ + "(`pvplog`.`pvp_date`) = " + .@ranking$ + "(CURRENT_DATE()) GROUP BY `char`.`name` ORDER BY count_kill DESC LIMIT " + .@limitRanking, .@id, .@name$, .@count_kill); mes .@message$; for( .@size = getarraysize(.@name$); .@i < .@size; .@i++ ) { query_sql("SELECT COUNT(`pvplog`.`victim_id`) FROM `pvplog` WHERE `pvplog`.`victim_id` = '"+.@id[.@i]+" AND " + .@ranking$ + "(`pvplog`.`pvp_date`) = " + .@ranking$ + "(CURRENT_DATE())", .@count_death); mes "Top " + (.@i+1) + ": ^2ecc71" + .@name$[.@i] + "^000000 kills times: ^e74c3c" + .@count_kill[.@i]/"+.@count_death+" + "^000000"; } } else if (@menu == 4) { query_sql("SELECT `char`.`name`, COUNT(`char`.`name`) AS count_kill FROM `pvplog` INNER JOIN `char` ON `char`.`char_id` = `pvplog`.`killer_id` WHERE `pvplog`.`victim_id` = " + getcharid(0) + " GROUP BY `char`.`name` ORDER BY count_kill DESC LIMIT " + .@limitEnemies, .@name$, .@count_kill); mes "Top your enemies:"; for( .@size = getarraysize(.@name$); .@i < .@size; .@i++ ) { mes "Top "+(.@i+1)+": ^e74c3c" + .@name$[.@i] + "^000000 kill you ^2ecc71" + .@count_kill[.@i] + "^000000 times" + "^000000"; } } close; L_RankMonth: mes "Ranking of month"; close; L_RankWeek: mes "Ranking of week"; close; L_RankDay: mes "Ranking of day"; close; end; } - script pvplog -1,{ OnInit: query_sql("CREATE TABLE IF NOT EXISTS `pvplog` (`pvp_id` mediumint(9) unsigned NOT NULL auto_increment, `pvp_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `killer_id` int(11) NOT NULL default '0', `victim_id` int(11) NOT NULL default '0', `map` varchar(11) NOT NULL default '', PRIMARY KEY (`pvp_id`)) ENGINE=MyISAM AUTO_INCREMENT=1;"); end; OnPCKillEvent: query_sql("INSERT INTO `pvplog` (`killer_id`, `victim_id`, `map`) VALUES ('" + getcharid(0) + "', (SELECT `char_id` FROM `char` WHERE `name` = '" + rid2name(killedrid) + "'), '" + strcharinfo(3) + "');"); end; }
  15. Nice find, I like it. I wonder which other things like that are hidden in there...
  16. I don't know if I got this right... item_db.txt: 31024,Immortal_Cursed_Knight_Card,Immortal Cursed Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAtkRate,10; bonus5 bAutoSpell,2066,5,20,ATF_WEAPON,1; },{},{} 31025,Immortal_Wind_Ghost_Card,Immortal Wind Ghost Card,6,20,,10,,,,,,,,2,,,,,{ bonus bMatkRate,10; bonus5 bAutoSpell,2450,5,20,ATF_MAGIC,1; },{},{} 31026,Immortal_Cursed_Knight_Card,Immortal Cursed Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus5 bAutoSpellWhenHit,2443,5,35,ATF_WEAPON,0; bonus5 bAutoSpellWhenHit,2444,5,80,ATF_MAGIC,0; autobonus "{ bonus bFlee,200; }",30,10000,BF_WEAPON; autobonus "{ bonus bSpeedRate,10; }",25,10000,BF_MAGIC; },{},{} item_combo_db.txt: 31024:31025:31025,{ bonus bAspd,1; bonus bVariableCastrate,-10; }
  17. - script Megaphone -1,{ OnCommand: if(vip_status(VIP_ACTIVE)) { setarray .@color$[0],"ff0000","00ff00","0000ff"; for(.@size = getarraysize(.@color$);.@i < .@size;.@i++) .@menu$+= "^"+.@color$[.@i]+"Sample:"; .@color = select(.@menu$) - 1; input .@msg$; if(.@msg$ != " " && .@msg$ != "0") announce strcharinfo(0)+": "+.@msg$,bc_all,"0x"+.@color$[.@color]; } else { message strcharinfo(0),"This command is only avaiaible to VIPs."; } end; OnInit: bindatcmd "torpedo","Megaphone::OnCommand"; end; }
  18. Maybe because you're casting a targeted skill to the ground? payon,162,219,4 script Unit Master 101,{ .@amount = 1; for (.@i = 0; .@i < .@amount; .@i++) { monster ("payon",167,215,"Poporing",1031,.@amount); .@mid[.@i] = $@mobid[0]; setunitdata .@mid[.@i],UMOB_LEVEL,1; setunitdata .@mid[.@i],UMOB_MAXHP,10000; setunitdata .@mid[.@i],UMOB_ATKMIN,10000; setunitdata .@mid[.@i],UMOB_ATKMAX,21000; setunitdata .@mid[.@i],UMOB_MATKMIN,10000; setunitdata .@mid[.@i],UMOB_MATKMAX,21000; setunitdata .@mid[.@i],UMOB_HIT,10000; setunitdata .@mid[.@i],UMOB_ATKRANGE,5; setunitdata .@mid[.@i],UMOB_ADELAY,100; } monster ("payon",172,215,"Mandragora",1020,.@amount); .@target = $@mobid[0]; unitskilluseid .@mid[0],19,3,.@target; end; }
  19. - script Megaphone -1,{ OnCommand: if(vip_status(VIP_ACTIVE)) { setarray .@color$[0],"ff0000","00ff00","0000ff"; for(.@size = getarraysize(.@color$);.@i < .@size;.@i++) .@menu$+= "^"+.@color$[.@i]+"Sample:"; .@color = select(.@menu$) - 1; input .@msg$; if(.@msg$ != " " && .@msg$ != "0") announce .@msg$,bc_all,"0x"+.@color$[.@color]; } else { message strcharinfo(0),"This command is only avaiaible to VIPs."; } end; OnInit: bindatcmd "torpedo","Megaphone::OnCommand"; end; }
  20. Maybe now? I read something about rids in unitattack. function script F_botex { set .@i,0; set .@rid,getcharid(3); while (.@i < 1) { set .@b,0; dispbottom .@i+""; .@rid = getcharid(3); getmapxy(.@m$,.@x0,.@y0,0); sleep2 100; .@x = rand(-13,13)+.@x0; .@y = rand(-13,13)+.@y0; sleep2 100; if(!checkcell( .@m$,.@x,.@y,cell_chkpass )){ dispbottom "Coordinate not exists!"; continue; } else if(checkcell( .@m$,.@x,.@y,cell_chkpass )){ dispbottom "Coordinate exists!"; } sleep2 100; while(.@x0 != .@x && .@y0 != .@y) { set .@b,.@b+1; viewpoint 1,.@x,.@y,1,0xFF0000; dispbottom "auto walking to x = "+.@x+" y = "+.@y; unitwalk getcharid(3),.@x,.@y,strnpcinfo(3)+"::OnReach"; sleep2 2000; if(.@b > 5) break; getmapxy(.@m$,.@x0,.@y0,0); sleep2 100; } .@n = getareaunits(BL_MOB,.@m$,.@x0 + 5,.@y0 + 5,.@x0 - 5,.@y0 - 5,.@mob); detachrid; unitattack .@rid,.@mob[rand(.@n)],true; attachrid .@rid; percentheal 100,100; sleep2 100; dispbottom "JackJack"; } end; }
  21. Based on Mahiro's suggestion: - script paytowinbuffs -1,{ OnPCStatCalcEvent: if(isequippedcnt(4263,1755) > 0) { for(;.@i < .ele_size;.@i++) sc_end .elements[.@i]; } end; OnBuffs: if(gettimetick(2) < @use_delay){ dispbottom( "You have to wait "+Time2Str(@use_delay)+" to use the command again.", 0xFF0000 ); end; } if(getgroupid() <= 4) { message strcharinfo(0),"Falha, você não possui VIP."; end; } if(isequippedcnt(4263,1755) > 0) { message strcharinfo(0),"Não funciona equipado com Samurai Encarnado."; end; } for(;.@i < .ele_size;.@i++) sc_end .elements[.@i]; .@menu$ = implode(.buffs$,":"); .@i = prompt(.@menu$) -1; if(.@i < 254 && gettimetick(2) >= @use_delay && isequippedcnt(4263,1755) < 1) { sc_start .elements[.@i],180000,5; @use_delay = gettimetick(2) + .use_delay; } end; OnInit: .use_delay = 30; // 30 second use delay setarray .buffs$, "^800080Envenenar Arma^000000", "^40E0D0Aspersio^000000", "^000000Sombrio^000000", "^FFD700Encantar com Ventania^000000", "^0000FFEncantar com Geada^000000", "^FF0000Encantar com Chama^000000", "^B8860BEncantar com Terremoto^000000"; setarray .elements, 26, 37, 144, 98, 97, 96, 99; .ele_size = getarraysize(.elements); bindatcmd "encantar","paytowinbuffs::OnBuffs",0,99; end; }
  22. - script Megaphone -1,{ OnCommand: setarray .@color$[0],"ff0000","00ff00","0000ff"; for(.@size = getarraysize(.@color$);.@i < .@size;.@i++) .@menu$+= "^"+.@color$[.@i]+"Sample:"; .@color = select(.@menu$) - 1; input .@msg$; if(.@msg$ != " " && .@msg$ != "0") announce .@msg$,bc_all,"0x"+.@color$[.@color]; end; OnInit: bindatcmd "torpedo","Megaphone::OnCommand",5; end; }
  23. prontera,100,100,4 script VIP Room Winners 100,{ setarray .@castles$[0], "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05", "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05", "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05", "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05", "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05", "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05"; .@guild = getcharid(2); for(.@size = getarraysize(.@castles$);.@i < .@size;.@i++) { .@winner = getcastledata(.@castles$[.@i],CD_GUILD_ID); if(.@winner && .@winner == .@guild) { warp "viproom",0,0; end; } } mes "This room is only for winners."; close; }
  24. To be honest, can't really know how much you need to change. Do you know what version do you have? Anyways I think it has to be something about map.cpp or map.hpp Check the differences yourself: https://github.com/rathena/rathena/search?q=bl_type&amp;type=Code
×
×
  • Create New...