Kassio Felix
-
Posts
20 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Kassio Felix
-
-
Salve pessoal estou com duvida pois n consigo acerta a formula
estou usando esse script do Emistry Porem eu não estou conseguindo colocar as placas uma ao lado da outra com 1 espaço de diferença para o lado e para baixo, e quando consigo fica 5 a 10 uma em cima da outra, alguém pode me ensinar essa formula de posicionamento ?
Na imagem abaixo consigo colocar quatro com essa configuração do set .map$ porem quando adiciono mais fica tudo em cima uma placa da outra
set .map$,"quiz_00"; setcell .map$,0,0,300,300,cell_novending,1; // x and y horizone .. setarray .x_line,50,54,0,0,0,0,0; setarray .y_line,27,17,0,0,0,0,0;
Spoilerquiz_00,62,34,4 script Vending Helper 757,{ for( set .@i,1; .@i <= .count; set .@i,.@i + 1 ){ getmapxy( .@map$,.@x,.@y,1,"#vend_slot"+.@i ); if( !getareausers( .map$,.@x,.@y,.@x,.@y ) && .@x > 1 && .@y > 1 ){ set .@available,.@available + 1; set .@menu$,.@menu$ + "Slot - "+.@i+":"; }else{ set .@menu$,.@menu$ + ":"; } } if( !.@available ){ mes "Dont have any available slot."; }else if( !getskilllv("MC_VENDING") ){ mes "You dont have ^0055FFVending Skill^000000."; }else{ mes "Available Slot : "+.@available; mes "Please select a slot to vending."; set .@i,select( .@menu$ ); getmapxy( .@map$,.@x,.@y,1,"#vend_slot"+.@i ); if( .@x == 1 || .@y == 1 ){ mes "This NPC at invalid location..."; }else{ warp .@map$,.@x,.@y; hideonnpc "#vend_slot"+.@i; } } close; OnInit: sleep 1000; // Map for vending set .map$,"quiz_00"; setcell .map$,0,0,300,300,cell_novending,1; // x and y horizone .. setarray .x_line,50,54,0,0,0,0,0; setarray .y_line,27,17,0,0,0,0,0; set .x_line_size,getarraysize( .x_line ); set .y_line_size,getarraysize( .y_line ); set .count,1; for( set .@x,0; .@x < .x_line_size; set .@x,.@x + 1 ) for( set .@y,0; .@y < .y_line_size; set .@y,.@y + 1 ) if( checkcell( .map$,.x_line[.@x],.y_line[.@y],cell_chkpass ) ){ movenpc "#vend_slot"+.count,.x_line[.@x],.y_line[.@y]; setcell .map$,.x_line[.@x],.y_line[.@y],.x_line[.@x],.y_line[.@y],cell_novending,0; set .count,.count + 1; } npctalk "Vending Spot : "+.count; donpcevent "::OnSetup"; end; } - script vend_slot -1,{ getmapxy( .@map$,.@x,.@y,1 ); if( !getskilllv("MC_VENDING") ){ mes "You dont have ^0055FFVending Skill^000000."; }else if( getareausers( .@map$,.@x,.@y,.@x,.@y ) ){ mes "Someone already selected this spot."; }else{ mes "Spot : ^777777Available^000000"; mes "^0055FF[ Vending Area Rules ]^000000"; mes "^FF0000 ~ Use proper Shop Name.^000000"; mes "^FF0000 ~ Never sell Junk/Gifts.^000000"; mes " "; mes "^777777Player will failed to follow these will be punished.^000000"; if( select( "Select this Spot","Cancel" ) == 1 ){ warp .@map$,.@x,.@y; hideonnpc strnpcinfo(0); } } close; OnSetup: getmapxy( .@map$,.@x,.@y,1 ); set .@npcname$,strnpcinfo(0); while( .@map$ != "" ){ if( getareausers( .@map$,.@x,.@y,.@x,.@y ) ){ hideonnpc .@npcname$; }else{ hideoffnpc .@npcname$; // specialeffect 313; } sleep 5000; } end; } // Add more if needed. quiz_00,1,1,4 duplicate(vend_slot) #vend_slot1 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot2 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot3 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot4 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot5 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot6 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot7 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot8 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot9 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot10 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot11 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot12 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot13 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot14 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot15 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot16 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot17 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot18 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot19 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot20 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot21 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot22 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot23 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot24 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot25 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot26 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot27 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot28 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot29 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot30 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot31 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot32 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot33 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot34 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot35 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot36 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot37 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot38 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot39 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot40 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot41 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot42 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot43 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot44 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot45 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot46 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot47 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot48 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot49 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot50 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot51 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot52 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot53 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot54 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot55 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot56 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot57 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot58 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot59 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot60 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot70 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot71 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot72 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot73 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot74 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot75 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot76 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot77 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot78 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot79 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot80 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot90 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot91 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot92 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot93 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot94 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot95 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot96 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot97 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot98 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot99 858 quiz_00,1,1,4 duplicate(vend_slot) #vend_slot100 858
Salveeeeee.. Eu entendi o npc, ele é baseado num sistema criado por René Descartes. Sistema de coordenadas cartesiano. Ele vai funcionar da seguinte maneira.
x baixo. y reto o npc vai criar 1 placa na celula 118 e 129 vai ser a direção que vou criar as placas então para fazer uma fila de placa eu vou por as celulas 129 em diante 130,131,132 etc.
para criar uma novafileira eu vou seleciona a direção por exemplo 122 ai vai ficar assim :
setarray .x_line,118,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
setarray .y_line,129,0,0,0,0,0,0,0;
qualquer duvida podem perguntar que eu ajudo tbm, Moderadores, podem fechar o tópico e se puder levar essa explicação para a area adequada de suporte.
-
On 11/17/2020 at 8:47 AM, Hyroshima said:
Um adendo amigo, Você deve usar o label OnInit: no final do código ou quando o script fizer o que você quer ali ele finalize com um end; caso contrário o script vai passar para a label OnNPCKillEvent: que no caso só seria ativado quando o player mata mob, então se o script do OnInit não for finalizado ali antes de começar a outra label vai acontecer esse erro justamente por quê não tem um player anexado ou seja não foi ativado por um player simplesmente o script seguiu em frente, só precisa adicionar um end; após definir os ids.
vlw mano =D vou usar essa dica. =D
-
Salve pessoal. Estou tendo um erro na Kafra da guild. ela apresenta o erro que esta na imagem abaixo. Pelo que consegui entender lendo o erro, deve ser algo relacionado ao comando ta vindo ta vindo antes dele ser carregado. Porem n sei como arrumar, alguém pode ajudar? vou deixa abaixo da imagem em spoiler/code o npc
QuoteSpoiler// ________________________________________________________ // / \ // | _ _ _ _ | // | | |__ _ __ / \ | |_| |__ ___ _ __ __ _ | // | | '_ \| '__/ _ \| __| '_ \ / _ \ '_ \ / _` | | // | | |_) | | / ___ \ |_| | | | __/ | | | (_| | | // | |_.__/|_|/_/ \_\__|_| |_|\___|_| |_|\__,_| | // | | // | brAthena Script | // |--------------------------------------------------------| // | Nome do Script: gde_padrao.txt | // |--------------------------------------------------------| // | Criado por: eA/rA/brA Dev. Team | // |--------------------------------------------------------| // | Versões eA/rA/brA: 1.9/1.0/1.2 | // |--------------------------------------------------------| // | Descrição: NPCs padrões de todos os castelos GDE 1.0. | // |--------------------------------------------------------| // | Changelog: | // | 1.0 Criado Cabeçalho [Shiraz] | // | 1.1 Tradução PT-BR [cleyton] | // | 1.2 Otimizações [Filid] | // |--------------------------------------------------------| // | - Anotações | // \________________________________________________________/ // Gerenciador Automático //============================================================ - script Gld_Agit_Manager::Gld_Agit_Manager -1,{ end; // Início da Guerra do Emperium. OnAgitStart: if (strnpcinfo(0) == "Gld_Agit_Manager") end; MapRespawnGuildID strnpcinfo(2),GetCastleData(strnpcinfo(2),1),6; GvgOn strnpcinfo(2); // Spawn do Emperium. OnStartArena: if (strnpcinfo(2) == "aldeg_cas01") { setarray .@emproom[0],216,23; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@emproom[0],213,23; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@emproom[0],205,31; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@emproom[0],36,217; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@emproom[0],27,101; } else if (strnpcinfo(2) == "gefg_cas01") { setarray .@emproom[0],197,181; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@emproom[0],176,178; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@emproom[0],244,166; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@emproom[0],174,177; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@emproom[0],194,184; } else if (strnpcinfo(2) == "payg_cas01") { setarray .@emproom[0],139,139; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@emproom[0],38,25; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@emproom[0],269,265; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@emproom[0],270,28; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@emproom[0],30,30; } else if (strnpcinfo(2) == "prtg_cas01") { setarray .@emproom[0],197,197; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@emproom[0],157,174; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@emproom[0],16,220; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@emproom[0],291,14; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@emproom[0],266,266; } // Adicione castelos personalizados abaixo. else { end; } if (!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")) { monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Emperium",1288,1,"Agit#"+strnpcinfo(2)+"::OnAgitBreak"; } end; // Quebra do Emperium. OnAgitBreak: set .@GID,getcharid(2); // Exibição do log de erro caso um personagem sem Clã quebra um Emperium (Isso nunca deve ocorrer em padrões oficiais - kRO/bRO). if (.@GID <= 0) { set .@notice$,"O personagem "+strcharinfo(0)+" ("+getcharid(0)+") quebrou o Emperium do Castelo:: "+strnpcinfo(2)+" sem um Clã. Nenhum dado será salvo e o Emperium retornará."; logmes .@notice$; debugmes .@notice$; donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena"; end; } // Ajustes dos Leveis de Ecônomia e Investimento para o Castelo. set .@Economy,GetCastleData(strnpcinfo(2),2) - 5; if (.@Economy < 0) set .@Economy, 0; SetCastleData strnpcinfo(2), 2, .@Economy; // Ajustes dos Leveis de Defesa do Investimento para o Castelo. set .@Defence,GetCastleData(strnpcinfo(2),3) - 5; if (.@Defence < 0) set .@Defence, 0; SetCastleData strnpcinfo(2), 3, .@Defence; // Adiciona uma nova Clã ao Castelo. SetCastleData strnpcinfo(2),1, .@GID; // Anúncio de Destruição do Emperium e sua nova Clã ocupante. mapannounce strnpcinfo(2),"O Emperium foi destruído.",bc_map|bc_woe,"0x00CCFF",FW_NORMAL,12; MapRespawnGuildID strnpcinfo(2),.@GID,6; // Repara os dados do Castelo, Desabilita a Kafra e Investimentos do Castelo. donpcevent strnpcinfo(0)+"::OnRecvCastle"; disablenpc "Funcionária Kafra#"+strnpcinfo(2); for( set .@i, 4; .@i <= 9; set .@i, .@i+1 ) { SetCastleData strnpcinfo(2), .@i, 0; } // Limpa os dados dos Guardiões, caso a nova Clã não tenha habilidades para usar Guardiões if( getgdskilllv(.@GID,10002) == 0 ) { for( set .@i, 10; .@i <= 17; set .@i, .@i+1 ) { SetCastleData strnpcinfo(2), .@i, 0; } } // Readiciona o Emperium e mostra a nova Clã ocupante. sleep 500; // Slow down script execution slightly. if( agitcheck() ) donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena"; sleep 7000; announce "O castelo [" + getcastlename(strnpcinfo(2)) + "] foi conquistado pelo Clã [" + getguildName(.@GID) + "].",bc_all|bc_woe; end; // Término da Guerra do Emperium. OnAgitEnd: if (strnpcinfo(0) == "Gld_Agit_Manager") end; GvgOff strnpcinfo(2); // Caso o castelo não tenha nenhum Clã ocupante, o Emperium não é destruído. if (GetCastleData(strnpcinfo(2),1)) { KillMonster strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak"; } end; // Caso a Clã abandone o Castelo. OnGuildBreak: if (strnpcinfo(0) == "Gld_Agit_Manager") end; // Destroí os Guardiões, desabilita a Kafra e modifica o Guild Master (Dono do Castelo) para 0. killmonster strnpcinfo(2),"Guardian#"+strnpcinfo(2)+"::OnGuardianDied"; disablenpc "Funcionária Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),1,0; // Aguarda o salvamento de informação da Guilda. sleep 7000; Announce "O castelo [" + GetCastleName(strnpcinfo(2)) + "] foi abandonado.",0; donpcevent strnpcinfo(0)+"::OnRecvCastle"; end; OnAgitInit: OnRecvCastle: if (strnpcinfo(0) == "Gld_Agit_Manager") end; // Spawn Monsters if the castle is empty. set .@GID, GetCastleData(strnpcinfo(2),1); if (.@GID == 0) { killmonsterall strnpcinfo(2); if (compare(strnpcinfo(2),"aldeg")) { // Normal Spawns monster strnpcinfo(2),0,0,"Evil Druid",1117,10; monster strnpcinfo(2),0,0,"Khalitzburg",1132,4; monster strnpcinfo(2),0,0,"Abysmal Knight",1219,2; monster strnpcinfo(2),0,0,"Executioner",1205,1; monster strnpcinfo(2),0,0,"Penomena",1216,10; monster strnpcinfo(2),0,0,"Alarm",1193,18; monster strnpcinfo(2),0,0,"Clock",1269,9; monster strnpcinfo(2),0,0,"Raydric Archer",1276,7; monster strnpcinfo(2),0,0,"Wanderer",1208,3; monster strnpcinfo(2),0,0,"Alice",1275,1; monster strnpcinfo(2),0,0,"Bloody Knight",1268,1; monster strnpcinfo(2),0,0,"Dark Lord",1272,1; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "aldeg_cas01") { setarray .@emproom[0],216,23; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@emproom[0],213,23; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@emproom[0],205,31; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@emproom[0],36,217; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@emproom[0],27,101; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Dark Lord",1272,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Tower Keeper",1270,4; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Bloody Knight",1268,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Abysmal Knight",1219,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Archer",1276,5; } else if (compare(strnpcinfo(2),"gefg")) { // Normal Spawns monster strnpcinfo(2),0,0,"Evil Druid",1117,10; monster strnpcinfo(2),0,0,"Wind Ghost",1263,11; monster strnpcinfo(2),0,0,"Bathory",1102,10; monster strnpcinfo(2),0,0,"Jakk",1130,10; monster strnpcinfo(2),0,0,"Marduk",1140,20; monster strnpcinfo(2),0,0,"Raydric",1163,9; monster strnpcinfo(2),0,0,"Alice",1275,1; monster strnpcinfo(2),0,0,"Abysmal Knight",1219,1; monster strnpcinfo(2),0,0,"Moonlight Flower",1150,1; monster strnpcinfo(2),0,0,"Phreeoni",1159,1; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "gefg_cas01") { setarray .@emproom[0],197,181; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@emproom[0],176,178; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@emproom[0],244,166; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@emproom[0],174,177; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@emproom[0],194,184; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Mysteltainn",1203,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Orc Hero",1087,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"High Orc",1213,10; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Orc Archer",1189,10; } else if (compare(strnpcinfo(2),"payg")) { // Normal Spawns monster strnpcinfo(2),0,0,"Greatest General",1277,9; monster strnpcinfo(2),0,0,"Wanderer",1208,10; monster strnpcinfo(2),0,0,"Mutant Dragonoid",1262,5; monster strnpcinfo(2),0,0,"Bathory",1102,5; monster strnpcinfo(2),0,0,"Moonlight Flower",1150,1; monster strnpcinfo(2),0,0,"Eddga",1115,1; monster strnpcinfo(2),0,0,"Horong",1129,11; monster strnpcinfo(2),0,0,"Raydric Archer",1276,5; monster strnpcinfo(2),0,0,"Kobold Archer",1282,4; monster strnpcinfo(2),0,0,"Gargoyle",1253,5; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "payg_cas01") { setarray .@emproom[0],139,139; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@emproom[0],38,25; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@emproom[0],269,265; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@emproom[0],270,28; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@emproom[0],30,30; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Moonlight Flower",1150,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Eddga",1115,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Wanderer",1208,6; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Archer",1276,5; } else if (compare(strnpcinfo(2),"prtg")) { // Normal Spawns monster strnpcinfo(2),0,0,"Raydric",1163,1; monster strnpcinfo(2),0,0,"Khalitzburg",1132,10; monster strnpcinfo(2),0,0,"Abysmal Knight",1219,5; monster strnpcinfo(2),0,0,"Bloody Knight",1268,5; monster strnpcinfo(2),0,0,"Stormy Knight",1251,1; monster strnpcinfo(2),0,0,"Hatii",1252,1; monster strnpcinfo(2),0,0,"Raydric Archer",1276,5; monster strnpcinfo(2),0,0,"Gryphon",1259,2; monster strnpcinfo(2),0,0,"Chimera",1283,3; monster strnpcinfo(2),0,0,"Alice",1275,1; monster strnpcinfo(2),0,0,"Zealotus",1200,1; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "prtg_cas01") { setarray .@emproom[0],197,197; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@emproom[0],157,174; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@emproom[0],16,220; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@emproom[0],291,14; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@emproom[0],266,266; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Guardian Knight",1268,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Guardian Master",1251,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Hatii",1252,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Guardian Knight",1219,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Archer",1276,5; } // Add custom Guild Castles here. else { end; } donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena"; // Disable Kafra Staff... disablenpc "Kafra Staff#"+strnpcinfo(2); end; } else { // Caso a Clã tenha conquistado o Castelo, adicionar seus Emblemas nas Bandeiras de todos os locais. if (strnpcinfo(2) == "aldeg_cas01") { donpcevent "::OnRecvCastleA01"; } else if (strnpcinfo(2) == "aldeg_cas02") { donpcevent "::OnRecvCastleA02"; } else if (strnpcinfo(2) == "aldeg_cas03") { donpcevent "::OnRecvCastleA03"; } else if (strnpcinfo(2) == "aldeg_cas04") { donpcevent "::OnRecvCastleA04"; } else if (strnpcinfo(2) == "aldeg_cas05") { donpcevent "::OnRecvCastleA05"; } else if (strnpcinfo(2) == "gefg_cas01") { donpcevent "::OnRecvCastleG01"; } else if (strnpcinfo(2) == "gefg_cas02") { donpcevent "::OnRecvCastleG02"; } else if (strnpcinfo(2) == "gefg_cas03") { donpcevent "::OnRecvCastleG03"; } else if (strnpcinfo(2) == "gefg_cas04") { donpcevent "::OnRecvCastleG04"; } else if (strnpcinfo(2) == "gefg_cas05") { donpcevent "::OnRecvCastleG05"; } else if (strnpcinfo(2) == "payg_cas01") { donpcevent "::OnRecvCastlePy01"; } else if (strnpcinfo(2) == "payg_cas02") { donpcevent "::OnRecvCastlePy02"; } else if (strnpcinfo(2) == "payg_cas03") { donpcevent "::OnRecvCastlePy03"; } else if (strnpcinfo(2) == "payg_cas04") { donpcevent "::OnRecvCastlePy04"; } else if (strnpcinfo(2) == "payg_cas05") { donpcevent "::OnRecvCastlePy05"; } else if (strnpcinfo(2) == "prtg_cas01") { donpcevent "::OnRecvCastlePt01"; } else if (strnpcinfo(2) == "prtg_cas02") { donpcevent "::OnRecvCastlePt02"; } else if (strnpcinfo(2) == "prtg_cas03") { donpcevent "::OnRecvCastlePt03"; } else if (strnpcinfo(2) == "prtg_cas04") { donpcevent "::OnRecvCastlePt04"; } else if (strnpcinfo(2) == "prtg_cas05") { donpcevent "::OnRecvCastlePt05"; } // Adicione castelos personalizados abaixo. else { end; } // Exibe os guardiões no castelo se adquiridos. donpcevent "Guardian#"+strnpcinfo(2)+"::OnSpawnGuardians"; // Exibe a kafra se adquirida. if (GetCastleData(strnpcinfo(2),9) < 1) disablenpc "Funcionária Kafra#"+strnpcinfo(2); } end; } // Kafras do Castelo //============================================================ - script Assistente Kafra#woe::guildkafra -1,{ set .@GID,GetCastleData(strnpcinfo(2),1); if (compare(strnpcinfo(2),"aldeg")) { setarray .@destination$[0],"Al De Baran","aldebaran"; setarray .@coordinates[0],132,103; } else if (compare(strnpcinfo(2),"gefg")) { setarray .@destination$[0],"Geffen","geffen"; setarray .@coordinates[0],120,39; } else if (compare(strnpcinfo(2),"payg")) { setarray .@destination$[0],"Payon","payon"; setarray .@coordinates[0],70,100; } else if (compare(strnpcinfo(2),"prtg")) { setarray .@destination$[0],"Prontera","prontera"; setarray .@coordinates[0],278,211; } // Adicione cordenadas personalizadas de Castelos abaixo. else { end; } cutin "kafra_01",2; if (getcharid(2) == .@GID) { mes "[Funcionária Kafra]"; mes "Bem vindo, membro do clã ^ff0000" + GetGuildName(.@GID) + "^000000."; mes "A Corporação Kafra estará com você onde quer que vá."; next; switch (select("Usar Armazém do Clã.:Usar serviço de Teleporte.:Alugar um carrinho.:Cancelar")) { case 1: mes "[Funcionária Kafra]"; if (getskilllv("NV_BASIC") < 6) { mes "Me desculpe, mas para poder usar o armazém, você precisa ser um Aprendiz com no mínimo level 6 de profissão."; close2; cutin "",255; end; } mes "Aqui, deixe-me abrir"; mes "seu Armazém para você."; mes "Obrigado por usar"; mes "o Serviço Kafra."; close2; cutin "",255; openstorage; end; case 2: mes "[Funcionária Kafra]"; mes "Por favor, escolha seu destino."; next; switch (select(.@destination$+" -> 200z:Cancelar")) { case 1: mes "[Funcionária Kafra]"; if (Zeny < 200) { mes "Você não possui a quantidade de zenys necessária. Verifique seus zenys novamente."; mes "O serviço de teleporte para "+.@destination$+" custará 200 zeny."; close2; cutin "",255; end; } set Zeny, Zeny - 200; set RESRVPTS,RESRVPTS+2; close2; warp .@destination$[1],.@coordinates[0],.@coordinates[1]; end; case 2: close2; cutin "",255; end; } case 3: mes "[Funcionária Kafra]"; if (BaseClass != Job_Merchant) { mes "Lamento, mas o serviço de aluguel de carrinhos está disponível somente para a classe de Mercadores e suas evoluções."; close2; cutin "",255; end; } if (checkcart()) { mes "Você já está com um carrinho equipado."; close2; cutin "",255; end; } mes "[Funcionária Kafra]"; mes "O aluguel de carrinhos custa 800 zenys. Deseja alugar um carrinho?"; next; switch (select("Alugar um Carrinho.:Cancelar")) { case 1: if (Zeny < 800) { mes "[Funcionária Kafra]"; mes "Me desculpe, mas você não possui zenys suficientes. São necessários 800 zenys para alugar um carrinho."; close2; cutin "",255; end; } set RESRVPTS,RESRVPTS+8; set Zeny, Zeny - 800; setcart; close2; cutin "",255; end; case 2: close2; cutin "",255; end; } case 4: mes "[Funcionária Kafra]"; mes "A Corp. Kafra fará o possível para oferecer o melhor serviço."; mes "Obrigada por usar a Corp. Kafra. Volte sempre."; close2; cutin "",255; end; } } mes "[Funcionária Kafra]"; mes "Estou instruída para servir somente os membros do Clã ^ff0000" + getguildname(.@GID) + "^000000. Por favor, procure outra Kafra da cidade mais próxima. Lamentamos pelo inconveniente."; close2; cutin "",255; end; } // Administração //============================================================ - script Castle Manager#cm::cm -1,{ set .@GID,GetCastleData(strnpcinfo(2),1); // .@guardiantype = Definições para os Guardiões nos Castelos. // 1 - Guardião Soldado; 2 - Guardião Arqueiro; 3 - Guardião Cavaleiro // .@guardianposx = Define a coordenada x para um Guardião. // [0] = 1° Guardiões da coordenada x. // .@guardianposy = Define a coordenada y para um Guardião. // [0] = 1° Guardiões da coordenada y. // .@masterroom = Define as coordenadas da "Sala do Tesouro". if (strnpcinfo(2) == "aldeg_cas01") { setarray .@guardiantype[0],1,2,2,2,2,3,3,3; setarray .@guardianposx[0],17,39,38,45,21,218,213,73; setarray .@guardianposy[0],218,208,196,228,194,24,24,70; setarray .@masterroom[0],113,223; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],27,88,117,60,51,21,36,210; setarray .@guardianposy[0],184,43,46,202,183,177,183,7; setarray .@masterroom[0],134,225; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@guardiantype[0],3,3,1,1,1,2,2,2; setarray .@guardianposx[0],90,116,86,116,64,212,195,110; setarray .@guardianposy[0],112,112,120,76,103,160,151,217; setarray .@masterroom[0],229,267; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@guardiantype[0],2,2,2,1,1,1,3,3; setarray .@guardianposx[0],187,192,148,145,169,198,48,55; setarray .@guardianposy[0],100,42,88,209,53,77,72,88; setarray .@masterroom[0],83,17; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@guardiantype[0],2,2,1,1,3,3,3,3; setarray .@guardianposx[0],51,188,157,157,27,145,156,41; setarray .@guardianposy[0],202,79,192,74,221,78,73,112; setarray .@masterroom[0],64,8; } // Geffen (Feudo de Britoniah) else if (strnpcinfo(2) == "gefg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],67,184,62,36,50,50,189,200; setarray .@guardianposy[0],179,20,41,186,186,67,41,167; setarray .@masterroom[0],152,117; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],64,56,166,35,20,19,166,159; setarray .@guardianposy[0],168,41,25,148,150,41,42,188; setarray .@masterroom[0],145,115; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],48,113,48,157,243,157,234,238; setarray .@guardianposy[0],176,214,207,62,41,45,25,160; setarray .@masterroom[0],275,289; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],53,31,49,29,147,57,160,148; setarray .@guardianposy[0],191,178,220,46,65,46,50,189; setarray .@masterroom[0],116,123; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],45,71,72,66,177,66,177,193; setarray .@guardianposy[0],149,163,142,47,50,17,35,166; setarray .@masterroom[0],149,106; } // Payon (Feudo do Bosque Celestial) else if (strnpcinfo(2) == "payg_cas01") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],229,225,222,99,65,36,51,138; setarray .@guardianposy[0],92,80,111,45,31,127,144,133; setarray .@masterroom[0],295,8; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],237,228,210,57,42,287,264,27; setarray .@guardianposy[0],54,72,41,241,241,257,272,20; setarray .@masterroom[0],141,149; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],245,269,36,41,39,19,37,268; setarray .@guardianposy[0],37,51,39,39,65,276,277,244; setarray .@masterroom[0],163,167; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],251,232,231,32,32,35,36,270; setarray .@guardianposy[0],212,212,175,287,232,45,17,41; setarray .@masterroom[0],151,47; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],19,33,266,266,263,263,250,36; setarray .@guardianposy[0],279,260,234,279,37,21,22,36; setarray .@masterroom[0],153,137; } // Prontera (Feudo das Valquírias) else if (strnpcinfo(2) == "prtg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],182,182,153,59,50,184,196,107; setarray .@guardianposy[0],62,116,86,28,36,183,189,179; setarray .@masterroom[0],15,209; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],161,153,178,71,49,64,7,75; setarray .@guardianposy[0],161,161,44,75,28,186,196,175; setarray .@masterroom[0],207,229; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],191,137,45,50,41,191,179,191; setarray .@guardianposy[0],190,190,99,87,87,42,43,72; setarray .@masterroom[0],190,130; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],276,274,246,38,29,33,78,36; setarray .@guardianposy[0],14,35,246,240,240,258,48,61; setarray .@masterroom[0],275,160; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],266,287,245,236,251,278,32,44; setarray .@guardianposy[0],262,280,250,63,63,253,253,248; setarray .@masterroom[0],281,176; } // Adicione castelos personalizados abaixo. else { end; } mes "[ Mordomo " + .@name$ + " ]"; if (.@GID == 0) { mes "Eu estou aguardando meu mestre retornar."; mes "Se você deseja falar com ele, também terá que aguardar."; close; } if (GetGuildMaster(.@GID) != strcharinfo(0)) { mes "Eu sou um leal seguidor do mestre ^ff0000" + getguildmaster(.@GID) + "^000000. Nós somos guardiões e defendemos nosso castelo até o fim!"; close; } mes "Bem-vindo, meu honorável mestre, ^ff0000" + getguildmaster(.@GID) + "^000000..."; mes "Estou a seu serviço para o que precisar e serei fiel as minhas funções."; next; switch(select("Informações do castelo.:Investir no crescimento comercial.:Inverstir na defesa.:Convocar Guardiões.:Serviços da Kafra.:Ir para sala do mestre.")) { case 1: mes "[ Mordomo " + .@name$ + " ]"; mes "Mestre, eu vou relatar as informações do castelo."; mes " "; mes "^0000ffO nível de investimento comercial é " + GetCastleData(strnpcinfo(2),2) + "."; if (GetCastleData(strnpcinfo(2),4)) { mes "E você investiu " + GetCastleData(strnpcinfo(2),4) + " vez(es) hoje."; } mes "O nível de defesa do castelo é " + GetCastleData(strnpcinfo(2),3) + ".^000000"; if (GetCastleData(strnpcinfo(2),5)) { mes "E você investiu " + GetCastleData(strnpcinfo(2),5) + " vez(es) hoje.^000000"; } mes " "; mes "Mestre, esse é todo o relatório de hoje."; close; case 2: set .@Economy,GetCastleData(strnpcinfo(2),2); if (.@Economy < 6) { set .@eco_invest,5000; } else if ((.@Economy >= 6) && (.@Economy <= 10)) { set .@eco_invest,10000; } else if ((.@Economy >= 11) && (.@Economy <= 15)) { set .@eco_invest,20000; } else if ((.@Economy >= 16) && (.@Economy <= 20)) { set .@eco_invest,35000; } else if ((.@Economy >= 21) && (.@Economy <= 25)) { set .@eco_invest,55000; } else if ((.@Economy >= 26) && (.@Economy <= 30)) { set .@eco_invest,80000; } else if ((.@Economy >= 31) && (.@Economy <= 35)) { set .@eco_invest,110000; } else if ((.@Economy >= 36) && (.@Economy <= 40)) { set .@eco_invest,145000; } else if ((.@Economy >= 41) && (.@Economy <= 45)) { set .@eco_invest,185000; } else if ((.@Economy >= 46) && (.@Economy <= 50)) { set .@eco_invest,230000; } else if ((.@Economy >= 51) && (.@Economy <= 55)) { set .@eco_invest,280000; } else if ((.@Economy >= 56) && (.@Economy <= 60)) { set .@eco_invest,335000; } else if ((.@Economy >= 61) && (.@Economy <= 65)) { set .@eco_invest,395000; } else if ((.@Economy >= 66) && (.@Economy <= 70)) { set .@eco_invest,460000; } else if ((.@Economy >= 71) && (.@Economy <= 75)) { set .@eco_invest,530000; } else if ((.@Economy >= 76) && (.@Economy <= 80)) { set .@eco_invest,605000; } else if ((.@Economy >= 81) && (.@Economy <= 85)) { set .@eco_invest,685000; } else if ((.@Economy >= 86) && (.@Economy <= 90)) { set .@eco_invest,770000; } else if ((.@Economy >= 91) && (.@Economy <= 95)) { set .@eco_invest,860000; } else if ((.@Economy >= 96) && (.@Economy <= 100)) { set .@eco_invest,955000; } // Quadrúplica o custo de investimento se já estiver sido feito um investimento anterior. if (GetCastleData(strnpcinfo(2),4)) { set .@eco_invest,.@eco_invest*4; } mes "[ Mordomo " + .@name$ + " ]"; mes "Se você aumentar o investimento comercial, a quantidade de tesouros produzidos para o Clã cresce. Se você deseja um futuro próspero, é necessário investir."; mes " "; mes "Originalmente, você pode investir uma vez, mas se pagar mais pode investir o dobro."; mes " "; if (.@Economy >= 100) { mes " "; mes "^ff0000Mas o nível de investimento comercial chegou a 100%. Não é mais necessário investir. Como eu esperava, você possui grande perspicácia mestre.^000000"; close; } if (GetCastleData(strnpcinfo(2),4) >= 2) { mes "^ff0000Mas você já investiu duas vezes hoje, então você não pode investir mais.^000000 Eu espero que o nível de investimento cresça cada vez mais."; close; } if (GetCastleData(strnpcinfo(2),4) == 0) { mes "Agora será necessário investir a quantia de ^ff0000" + .@eco_invest + "^000000 zenys. Você vai investir?"; } else { mes "Você já investiu hoje... mas se deseja investir novamente, será necessário investir mais ^ff0000" + .@eco_invest + "^000000 zenys."; } next; switch (select("Investir no crescimento comercial.:Cancelar")) { case 1: if (Zeny < .@eco_invest) { mes "[ Mordomo " + .@name$ + " ]"; mes "Sinto muito, mas você não possui zenys para investir. Mestre, tente novamente quando tiver juntado mais fundos."; close; } set Zeny, Zeny - .@eco_invest; SetCastleData strnpcinfo(2),4,GetCastleData(strnpcinfo(2),4)+1; mes "[ Mordomo " + .@name$ + "]"; mes "Nós concluímos os investimentos em segurança. Espero que nosso nível de comércio tenha aumentado mais até amanhã."; close; case 2: mes "[ Mordomo " + .@name$ + "]"; mes "Como o senhor desejar Mestre... Sem pressa. Faremos o nosso melhor."; close; } case 3: set .@Defence,GetCastleData(strnpcinfo(2),3); if (.@Defence < 6) { set .@def_invest,10000; } else if ((.@Defence >= 6) && (.@Defence <= 10)) { set .@def_invest,20000; } else if ((.@Defence >= 11) && (.@Defence <= 15)) { set .@def_invest,40000; } else if ((.@Defence >= 16) && (.@Defence <= 20)) { set .@def_invest,70000; } else if ((.@Defence >= 21) && (.@Defence <= 25)) { set .@def_invest,110000; } else if ((.@Defence >= 26) && (.@Defence <= 30)) { set .@def_invest,160000; } else if ((.@Defence >= 31) && (.@Defence <= 35)) { set .@def_invest,220000; } else if ((.@Defence >= 36) && (.@Defence <= 40)) { set .@def_invest,290000; } else if ((.@Defence >= 41) && (.@Defence <= 45)) { set .@def_invest,370000; } else if ((.@Defence >= 46) && (.@Defence <= 50)) { set .@def_invest,460000; } else if ((.@Defence >= 51) && (.@Defence <= 55)) { set .@def_invest,560000; } else if ((.@Defence >= 56) && (.@Defence <= 60)) { set .@def_invest,670000; } else if ((.@Defence >= 61) && (.@Defence <= 65)) { set .@def_invest,790000; } else if ((.@Defence >= 66) && (.@Defence <= 70)) { set .@def_invest,920000; } else if ((.@Defence >= 71) && (.@Defence <= 75)) { set .@def_invest,1060000; } else if ((.@Defence >= 76) && (.@Defence <= 80)) { set .@def_invest,1210000; } else if ((.@Defence >= 81) && (.@Defence <= 85)) { set .@def_invest,1370000; } else if ((.@Defence >= 86) && (.@Defence <= 90)) { set .@def_invest,1540000; } else if ((.@Defence >= 91) && (.@Defence <= 95)) { set .@def_invest,1720000; } else if ((.@Defence >= 96) && (.@Defence <= 100)) { set .@def_invest,1910000; } // Quadrúplica o custo de investimento se já estiver sido feito um investimento anterior. if (GetCastleData(strnpcinfo(2),5)) { set .@def_invest,.@def_invest*4; } mes "[ Mordomo " + .@name$ + " ]"; mes "Se você investir na defesa, a durabilidade dos guardiões e do Emperium irá aumentar. Se você espera possuir uma defesa sólida nas batalhas, invista na defesa."; mes " "; mes "Originalmente, você pode investir uma vez, mas se pagar mais pode investir o dobro."; mes " "; if (.@Defence >= 100) { mes "^ff0000Mas o nível de investimento da defesa chegou a 100%. Não é mais necessário investir. Como eu esperava, você possui grande perspicácia mestre.^000000"; close; } if (GetCastleData(strnpcinfo(2),5) >= 2) { mes "^ff0000^ff0000Mas você já investiu duas vezes hoje, então você não pode investir mais.^000000 Eu espero que o nível de defesa cresça cada vez mais."; close; } if (GetCastleData(strnpcinfo(2),5) == 0) { mes "Agora será necessário investir a quantia de ^ff0000" + .@def_invest + "^000000 zenys. Você vai investir?"; } else { mes "Você já investiu hoje... mas se deseja investir novamente, será necessário investir mais ^ff0000" + .@def_invest + "^000000 zenys."; } next; switch (select("Investir na defesa.:Cancelar")) { case 1: if (Zeny < .@def_invest) { mes "[ Mordomo " + .@name$ + " ]"; mes "Sinto muito, mas você já investiu duas vezes hoje, então você não pode investir mais."; close; } set Zeny, Zeny - .@def_invest; SetCastleData strnpcinfo(2),5,GetCastleData(strnpcinfo(2),5)+1; mes "[ "+strnpcinfo(1)+"]"; mes "Nós concluímos os investimentos em segurança. Espero que nosso nível de defesa tenha aumentado mais até amanhã."; close; case 2: mes "[ Mordomo " + .@name$ + " ]"; mes "Como o senhor desejar Mestre... Sem pressa. Faremos o nosso melhor!"; close; } case 4: mes "["+strnpcinfo(1)+"]"; mes "Você vai convocar um Guardião? Eles irão proteger o castelo com lealdade."; mes "Por favor, escolha o guardião que irá defender o nosso castelo."; next; for( set .@i, 0; .@i <= 7 ; set .@i, .@i+1 ) { if (.@guardiantype[.@i] == 1) { set .@type$,"Guardião Soldado"; } else if (.@guardiantype[.@i] == 2) { set .@type$,"Guardião Arqueiro"; } else { set .@type$,"Guardião Cavaleiro"; } if (guardianinfo(strnpcinfo(2),.@i,0)) { setarray .@gname$[.@i], .@type$ + " - Implementado (" + guardianinfo(strnpcinfo(2),.@i,2) + "/" + guardianinfo(strnpcinfo(2),.@i,1) + ")"; } else { setarray .@gname$[.@i], .@type$ + " - Não implementado"; } } set .@menu$,.@gname$[0]+":"+.@gname$[1]+":"+.@gname$[2]+":"+.@gname$[3]+":"+.@gname$[4]+":"+.@gname$[5]+":"+.@gname$[6]+":"+.@gname$[7]; set .@GDnum,select(.@menu$)+9; mes "[ Mordomo " + .@name$ + " ]"; mes "Você deseja chamar Guardiões? 10000 zenys são requeridos para convocar cada um."; next; switch (select("Chamar.:Cancelar")) { case 1: if (getgdskilllv(.@GID,10002) == 0) { mes "[ Mordomo " + .@name$ + " ]"; mes "Mestre, nós não temos habilidade para convocar Guardiões. Se desejar convocar guardiões, será necessário aprender essa habilidade do Clã, sem essa habilidade nós falharemos ao convocar guardiões."; close; } if (GetCastleData(strnpcinfo(2),.@GDnum) == 1) { mes "[ Mordomo " + .@name$ + " ]"; mes "Mestre, você já convocou esse Guardião. Não podemos convocar o mesmo novamente."; close; } if (Zeny < 10000) { mes "[ Mordomo " + .@name$ + " ]"; mes "Bem... Eu lamento, mas nós não temos verba para convocar guardiões. Dessa forma falhamos ao convocar novos guardiões."; close; } set Zeny, Zeny - 10000; SetCastleData strnpcinfo(2),.@GDnum,1; set .@UseGID,.@GDnum - 10; if (.@guardiantype[.@UseGID] == 1) { set .@type,1287; } else if (.@guardiantype[.@UseGID] == 2) { set .@type,1285; } else { set .@type,1286; } guardian strnpcinfo(2),.@guardianposx[.@UseGID],.@guardianposy[.@UseGID],strmobinfo(2,.@type),.@type,"Guardian#"+strnpcinfo(2)+"::OnGuardianDied",.@UseGID; mes "[ Mordomo " + .@name$ + " ]"; mes "A convocação dos guardiões está completa. Nossa defesa local foi fortalecida."; close; case 2: mes "[ Mordomo " + .@name$ + " ]"; mes "Eu fiz como você ordenou. Mas por favor, lembre que se tiver dinheiro sobrando, sempre será útil."; close; } case 5: if (GetCastleData(strnpcinfo(2),9) == 1) { mes "[ Mordomo " + .@name$ + " ]"; mes "Agora sobre os serviços da Kafra... Deseja dispensa-los?"; next; if (select("Dispensar.:Cancelar.") == 2) { mes "[ Mordomo " + .@name$ + " ]"; mes "Aquela Kafra é muito trabalhadora. Penso que seria melhor manter ela."; close; } cutin "kafra_01",2; mes "[Kafra Contratada]"; mes "Eu trabalhei tão duro... Mestre, é isso que deseja?... Se o senhor está insatisfeito, trabalhei mais ianda... Por favor, reconsidere mestre."; next; if (select("Dispensar.:Cancelar.") == 2) { mes "[Kafra Contratada]"; mes "Eu irei trabalhar arduamente... Muito obrigada!"; close; } mes "[Kafra Contratada]"; mes "Oh, meu Deus! Isso é um absurdo!"; next; cutin "",255; disablenpc "Funcionária Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),9,0; mes "[ Mordomo " + .@name$ + " ]"; mes "...."; mes "Dispensar o serviço da Kafra... mas... você está descontente com alguma coisa?"; close; } mes "[ Mordomo " + .@name$ + " ]"; mes "Você deseja contratar os serviços da Kafra para o nosso castelo através do Escritório Central das Kafras?"; mes "^ff0000 10000 zenys são necessários para a contratação. "; next; if (select("Contratar.:Cancelar.") == 2 ) { mes "[ Mordomo " + .@name$ + " ]"; mes "Fiz como foi ordenado, mas algum dos nossos membros não ficarão felizes. Será melhor contratar outra Kafra rapidamente."; close; } mes "[ Mordomo " + .@name$ + " ]"; if (getgdskilllv(.@GID,10001) == 0) { mes "Mestre, não podemos contratar os serviços da Kafra, porque você não fez um contrato com o Escritório Central das Kafras. Se deseja contratar os serviços das Kafras é necessário aprender essa habilidade no Clã."; close; } if (Zeny < 10000) { mes "Bem... Mas nós não temos verba para contratar. Somos incapazes de contratar os serviços das Kafras."; close; } set Zeny,Zeny-10000; enablenpc "Funcionária Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),9,1; mes "Nós concluímos o nosso contrato com o Escritório das Kafras com êxito. Nós contratamos os serviços das Kafras."; next; cutin "kafra_01",2; mes "[Kafra Contratada]"; mes "Como você está? Eu sou a Kafra enviada pelo escritório."; mes "Nós faremos o nosso melhor para manter a reputação das Kafras."; next; cutin "",255; mes "[ Mordomo " + .@name$ + " ]"; mes "O término do contrato das Kafras, é um mês após a sua contratação, após isso haverá a necessidade do pagamento de uma nova taxa."; mes "Isso será muito útil para os nossos membros."; close; case 6: mes "[ Mordomo " + .@name$ + " ]"; mes "Você deseja visitar a sala onde nossos tesouros são guardados?"; mes "Essa sala é restrita a você... Você é o único que tem acesso a ela."; next; if (select("Entrar na sala secreta.:Cancelar.") == 2) { mes "[ Mordomo " + .@name$ + " ]"; mes "Tesouros são produzidos uma vez por dia... se você não buscar eles, não serão produzidos novamente."; mes "Por isso seria interessante vir aqui uma vez por dia e guardar os tesouros no armazém do Clã."; close; } mes "[ Mordomo " + .@name$ + " ]"; mes "Por favor, me siga. Mostrarei a passagem secreta."; mes "Para você retornar, basta puxar uma alavanca..."; close2; warp strnpcinfo(2),.@masterroom[0],.@masterroom[1]; end; } } // Guilda Entradas - Cavernas //============================================================ - script Lever#gd::gdlever -1,{ set .@GID,GetCastleData(strnpcinfo(2),1); if (.@GID == 0) { mes "[Uma voz fazendo eco]"; mes "'Aquele que puder superar todas as provações mostrando bravura... encontrará o caminho.'"; close; } if (compare(strnpcinfo(2),"aldeg")) { set .@destination$,"gld_dun02"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],32,122; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],79,30; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],165,38; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],160,148; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],103,169; } else if (compare(strnpcinfo(2),"gefg")) { set .@destination$,"gld_dun04"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],39,258; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],125,270; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],268,251; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],268,108; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],230,35; } else if (compare(strnpcinfo(2),"payg")) { set .@destination$,"gld_dun01"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],186,165; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],54,165; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],54,39; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],186,39; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],223,202; } else if (compare(strnpcinfo(2),"prtg")) { set .@destination$,"gld_dun03"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],28,251; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],164,268; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],164,179; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],268,203; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],199,28; } // Adicione castelos personalizados abaixo. else { end; } mes "[Uma voz fazendo eco]"; mes "'Somente quem for bravo o bastante pode passar pelos testes.'"; next; mes " "; mes "Há uma pequena alavanca aqui. Deseja puxar ela?"; next; if(select("Puxar.:Não puxar.") == 1) { if (getcharid(2) == .@GID) { close2; warp .@destination$,.@coordinates[0],.@coordinates[1]; end; } mes " "; mes "Nada aconteceu."; close; } close; } // Guardian Spawner Template //============================================================ - script Gld_Guard_Template::Gld_Guard_Template -1,{ OnSpawnGuardians: // Definições para os Guardiões nos Castelos. // 1 - Guardião Soldado; 2 - Guardião Arqueiro; 3 - Guardião Cavaleiro // Define a coordenada x para um Guardião. // [0] = 1° Guardiões da coordenada x. // Define a coordenada y para um Guardião. // [0] = 1° Guardiões da coordenada y. // Define as coordenadas da "Sala do Tesouro". // Aldebaran (Feudo de Luina) if (strnpcinfo(2) == "aldeg_cas01") { setarray .@guardiantype[0],1,2,2,2,2,3,3,3; setarray .@guardianposx[0],17,39,38,45,21,218,213,73; setarray .@guardianposy[0],218,208,196,228,194,24,24,70; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],27,88,117,60,51,21,36,210; setarray .@guardianposy[0],184,43,46,202,183,177,183,7; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@guardiantype[0],3,3,1,1,1,2,2,2; setarray .@guardianposx[0],90,116,86,116,64,212,195,110; setarray .@guardianposy[0],112,112,120,76,103,160,151,217; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@guardiantype[0],2,2,2,1,1,1,3,3; setarray .@guardianposx[0],187,192,148,145,169,198,48,55; setarray .@guardianposy[0],100,42,88,209,53,77,72,88; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@guardiantype[0],2,2,1,1,3,3,3,3; setarray .@guardianposx[0],51,188,157,157,27,145,156,41; setarray .@guardianposy[0],202,79,192,74,221,78,73,112; } // Geffen (Feudo de Britoniah) else if (strnpcinfo(2) == "gefg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],67,184,62,36,50,50,189,200; setarray .@guardianposy[0],179,20,41,186,186,67,41,167; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],64,56,166,35,20,19,166,159; setarray .@guardianposy[0],168,41,25,148,150,41,42,188; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],48,113,48,157,243,157,234,238; setarray .@guardianposy[0],176,214,207,62,41,45,25,160; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],53,31,49,29,147,57,160,148; setarray .@guardianposy[0],191,178,220,46,65,46,50,189; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],45,71,72,66,177,66,177,193; setarray .@guardianposy[0],149,163,142,47,50,17,35,166; } // Payon (Feudo do Bosque Celestial) else if (strnpcinfo(2) == "payg_cas01") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],229,225,222,99,65,36,51,138; setarray .@guardianposy[0],92,80,111,45,31,127,144,133; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],237,228,210,57,42,287,264,27; setarray .@guardianposy[0],54,72,41,241,241,257,272,20; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],245,269,36,41,39,19,37,268; setarray .@guardianposy[0],37,51,39,39,65,276,277,244; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],251,232,231,32,32,35,36,270; setarray .@guardianposy[0],212,212,175,287,232,45,17,41; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],19,33,266,266,263,263,250,36; setarray .@guardianposy[0],279,260,234,279,37,21,22,36; } // Prontera (Feudo das Valquírias) else if (strnpcinfo(2) == "prtg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],182,182,153,59,50,184,196,107; setarray .@guardianposy[0],62,116,86,28,36,183,189,179; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],161,153,178,71,49,64,7,75; setarray .@guardianposy[0],161,161,44,75,28,186,196,175; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],191,137,45,50,41,191,179,191; setarray .@guardianposy[0],190,190,99,87,87,42,43,72; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],276,274,246,38,29,33,78,36; setarray .@guardianposy[0],14,35,246,240,240,258,48,61; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],266,287,245,236,251,278,32,44; setarray .@guardianposy[0],262,280,250,63,63,253,253,248; } // Adicione castelos personalizados abaixo. else { end; } // Matar todos os guardiões após serem criados novos.. killmonster strnpcinfo(2),strnpcinfo(0)+"::OnGuardianDied"; for( set .@i, 0; .@i <= 7 ; set .@i, .@i+1 ) { set .@UseGID,.@i + 10; if (.@guardiantype[.@i] == 1) { set .@type,1287; } else if (.@guardiantype[.@i] == 2) { set .@type,1285; } else { set .@type,1286; } if (GetCastleData(strnpcinfo(2),.@UseGID)) { guardian strnpcinfo(2),.@guardianposx[.@i],.@guardianposy[.@i],strmobinfo(2,.@type),.@type,"Guardian#"+strnpcinfo(2)+"::OnGuardianDied",.@i; } } end; OnGuardianDied: end; } // Layout de Proteção na Sala do Tesouro. //============================================================ - script Gld_Trea_Spawn::Gld_Trea_Spawn -1,{ end; OnClock0001: // Se esse script não é utilizado, então nada acontecerá. if (strnpcinfo(1) == "Gld_Trea_Spawn") end; set .@GID, GetCastleData(strnpcinfo(2),1); // Se não há uma guilda pertencente, nada acontece. if (!.@GID) end; // Existe economia no castelo? set .@Treasure,GetCastleData(strnpcinfo(2),2)/5+4; // Seta informações. if (strnpcinfo(2) == "aldeg_cas01") { set .@treasurebox,1324; setarray .@treasurex[0],115,122,115,122,116,117,118,119,120,121,121,121,121,121,121,120,119,118,117,116,116,116,116,116; setarray .@treasurey[0],226,226,219,219,225,225,225,225,225,225,224,223,222,221,220,220,220,220,220,220,221,222,223,224; } else if (strnpcinfo(2) == "aldeg_cas02") { set .@treasurebox,1326; setarray .@treasurex[0],134,135,135,134,132,133,134,135,136,137,137,137,137,137,137,136,135,134,133,132,132,132,132,132; setarray .@treasurey[0],231,231,230,230,233,233,233,233,233,233,232,231,230,229,228,228,228,228,228,228,229,230,231,232; } else if (strnpcinfo(2) == "aldeg_cas03") { set .@treasurebox,1328; setarray .@treasurex[0],224,225,225,224,222,223,224,225,226,227,227,227,227,227,227,226,225,224,223,222,222,222,222,222; setarray .@treasurey[0],269,269,268,268,271,271,271,271,271,271,270,269,268,267,266,266,266,266,266,266,267,268,269,270; } else if (strnpcinfo(2) == "aldeg_cas04") { set .@treasurebox,1330; setarray .@treasurex[0],84,85,85,84,82,83,84,85,86,87,87,87,87,87,87,86,85,84,83,82,82,82,82,82; setarray .@treasurey[0],13,13,12,12,15,15,15,15,15,15,14,13,12,11,10,10,10,10,10,10,11,12,13,14; } else if (strnpcinfo(2) == "aldeg_cas05") { set .@treasurebox,1332; setarray .@treasurex[0],61,62,62,61,59,60,61,62,63,64,64,64,64,64,64,63,62,61,60,59,59,59,59,59; setarray .@treasurey[0],12,12,11,11,14,14,14,14,14,14,13,12,11,10,9,9,9,9,9,9,10,11,12,13; } else if (strnpcinfo(2) == "gefg_cas01") { set .@treasurebox,1334; setarray .@treasurex[0],153,154,154,153,151,152,153,154,155,156,156,156,156,156,156,155,154,153,152,151,151,151,151,151; setarray .@treasurey[0],113,113,112,112,115,115,115,115,115,115,114,113,112,111,110,110,110,110,110,110,111,112,113,114; } else if (strnpcinfo(2) == "gefg_cas02") { set .@treasurebox,1336; setarray .@treasurex[0],139,140,140,139,137,138,139,140,141,142,142,142,142,142,142,141,140,139,138,137,137,137,137,137; setarray .@treasurey[0],115,115,114,114,117,117,117,117,117,117,116,115,114,113,112,112,112,112,112,112,113,114,115,116; } else if (strnpcinfo(2) == "gefg_cas03") { set .@treasurebox,1338; setarray .@treasurex[0],269,270,270,269,267,268,269,270,271,272,272,272,272,272,272,271,270,269,268,267,267,267,267,267; setarray .@treasurey[0],291,291,290,290,293,293,293,293,293,293,292,291,290,289,288,288,288,288,288,288,289,290,291,292; } else if (strnpcinfo(2) == "gefg_cas04") { set .@treasurebox,1340; setarray .@treasurex[0],115,116,116,115,113,114,115,116,117,118,118,118,118,118,118,117,116,115,114,113,113,113,113,113; setarray .@treasurey[0],119,119,118,118,121,121,121,121,121,121,120,119,118,117,116,116,116,116,116,116,117,118,119,120; } else if (strnpcinfo(2) == "gefg_cas05") { set .@treasurebox,1342; setarray .@treasurex[0],143,144,144,143,141,142,143,144,145,146,146,146,146,146,146,145,144,143,142,141,141,141,141,141; setarray .@treasurey[0],110,110,109,109,112,112,112,112,112,112,111,110,109,108,107,107,107,107,107,107,108,109,110,111; } else if (strnpcinfo(2) == "payg_cas01") { set .@treasurebox,1344; setarray .@treasurex[0],289,292,292,289,288,289,290,291,292,293,293,293,293,293,293,292,291,290,289,288,288,288,288,288; setarray .@treasurey[0],10,10,7,7,11,11,11,11,11,11,10,9,8,7,6,6,6,6,6,6,7,8,9,10; } else if (strnpcinfo(2) == "payg_cas02") { set .@treasurebox,1346; setarray .@treasurex[0],143,146,146,143,142,143,144,145,146,147,147,147,147,147,147,146,145,144,143,142,142,142,142,142; setarray .@treasurey[0],146,146,143,143,147,147,147,147,147,147,146,145,144,143,142,142,142,142,142,142,143,144,145,146; } else if (strnpcinfo(2) == "payg_cas03") { set .@treasurebox,1348; setarray .@treasurex[0],158,159,159,158,156,157,158,159,160,161,161,161,161,161,161,160,159,158,157,156,156,156,156,156; setarray .@treasurey[0],169,169,168,168,171,171,171,171,171,171,170,169,168,167,166,166,166,166,166,166,167,168,169,170; } else if (strnpcinfo(2) == "payg_cas04") { set .@treasurebox,1350; setarray .@treasurex[0],146,147,147,146,144,145,146,147,148,149,149,149,149,149,149,148,147,146,145,144,144,144,144,144; setarray .@treasurey[0],48,48,47,47,50,50,50,50,50,50,49,48,47,46,45,45,45,45,45,45,46,47,48,49; } else if (strnpcinfo(2) == "payg_cas05") { set .@treasurebox,1352; setarray .@treasurex[0],155,158,158,155,154,155,156,157,158,159,159,159,159,159,159,158,157,156,155,154,154,154,154,154; setarray .@treasurey[0],134,134,131,131,135,135,135,135,135,135,134,133,132,131,130,130,130,130,130,130,131,132,133,134; } else if (strnpcinfo(2) == "prtg_cas01") { set .@treasurebox,1354; setarray .@treasurex[0],10,11,11,10,8,9,10,11,12,13,13,13,13,13,13,12,11,10,9,8,8,8,8,8; setarray .@treasurey[0],209,209,208,208,211,211,211,211,211,211,210,209,208,207,206,206,206,206,206,206,207,208,209,210; } else if (strnpcinfo(2) == "prtg_cas02") { set .@treasurebox,1356; setarray .@treasurex[0],201,202,202,201,199,200,201,202,203,204,204,204,204,204,204,203,202,201,200,199,199,199,199,199; setarray .@treasurey[0],228,228,227,227,230,230,230,230,230,230,229,228,227,226,225,225,225,225,225,225,226,227,228,229; } else if (strnpcinfo(2) == "prtg_cas03") { set .@treasurebox,1358; setarray .@treasurex[0],187,188,188,187,185,186,187,188,189,190,190,190,190,190,190,189,188,187,186,185,185,185,185,185; setarray .@treasurey[0],132,132,131,131,134,134,134,134,134,134,133,132,131,130,129,129,129,129,129,129,130,131,132,133; } else if (strnpcinfo(2) == "prtg_cas04") { set .@treasurebox,1360; setarray .@treasurex[0],269,270,270,269,267,268,269,270,271,272,272,272,272,272,272,271,270,269,268,267,267,267,267,267; setarray .@treasurey[0],162,162,161,161,164,164,164,164,164,164,163,162,161,160,159,159,159,159,159,159,160,161,162,163; } else if (strnpcinfo(2) == "prtg_cas05") { set .@treasurebox,1362; setarray .@treasurex[0],275,276,276,275,273,274,275,276,277,278,278,278,278,278,278,277,276,275,274,273,273,273,273,273; setarray .@treasurey[0],178,178,177,177,180,180,180,180,180,180,179,178,177,176,175,175,175,175,175,175,176,177,178,179; } else { end; } // Aplicar investimento a Economia e Defesa. Desenvolvimento permanente só pode ocorrer uma vez por dia. if (GetCastleData(strnpcinfo(2),4)) { set .@Economy,GetCastleData(strnpcinfo(2),2); SetCastleData strnpcinfo(2),2,.@Economy + GetCastleData(strnpcinfo(2),4) + (rand(2) && getgdskilllv(.@GID,10014)); if (GetCastleData(strnpcinfo(2),2) > 100) SetCastleData strnpcinfo(2),2,100; } if (GetCastleData(strnpcinfo(2),5)) { set .@Defence,GetCastleData(strnpcinfo(2),3); SetCastleData strnpcinfo(2),3,.@Defence + GetCastleData(strnpcinfo(2),5); if (GetCastleData(strnpcinfo(2),3) > 100) SetCastleData strnpcinfo(2),3,100; } // Resetar limite de investimentos diários. setcastledata strnpcinfo(2),4,0; setcastledata strnpcinfo(2),5,0; // Spawn de caixas. for (set .@i,0; .@i < .@Treasure ; set .@i,.@i+1) { // set treasure box ID set .@boxid, .@treasurebox + (.@i+2) % 2; set .@box,1 << .@i; // Gera ou não gera baús se já existirem. if ((getd("$@"+strnpcinfo(2)+"_treasure") & .@box) == 0) { monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Treasure Chest",.@boxid,1,"Treasure#"+strnpcinfo(2)+"::OnTreasureDied"+.@i; setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") | .@box; } } end; // "Você quebrou o baú", são setados de forma individual. OnTreasureDied0: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1; end; OnTreasureDied1: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2; end; OnTreasureDied2: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4; end; OnTreasureDied3: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8; end; OnTreasureDied4: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~16; end; OnTreasureDied5: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~32; end; OnTreasureDied6: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~64; end; OnTreasureDied7: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~128; end; OnTreasureDied8: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~256; end; OnTreasureDied9: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~512; end; OnTreasureDied10: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1024; end; OnTreasureDied11: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2048; end; OnTreasureDied12: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4096; end; OnTreasureDied13: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8192; end; OnTreasureDied14: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~16384; end; OnTreasureDied15: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~32768; end; OnTreasureDied16: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~65536; end; OnTreasureDied17: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~131072; end; OnTreasureDied18: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~262144; end; OnTreasureDied19: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~524288; end; OnTreasureDied20: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1048576; end; OnTreasureDied21: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2097152; end; OnTreasureDied22: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4194304; end; OnTreasureDied23: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8388608; end; } // Sala do Tesouro - script Gld_Trea_Protect::Gld_Trea_Protect -1,{ OnTouch: // Armazena a ID da Guilda ocupante do Castelo. set .@GID, getcastledata(strnpcinfo(2),1); if (strcharinfo(0) != getguildmaster(.@GID)) { if (compare(strnpcinfo(2),"aldeg")) warp "aldebaran",143,112; else if (compare(strnpcinfo(2),"gefg")) warp "geffen",120,38; else if (compare(strnpcinfo(2),"payg")) warp "payon",100,100; else if (compare(strnpcinfo(2),"prtg")) warp "prontera",119,64; } end; } prtg_cas01,11,208,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas01 -1,6,6 prtg_cas02,202,228,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas02 -1,6,6 prtg_cas03,189,132,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas03 -1,6,6 prtg_cas04,271,162,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas04 -1,6,6 prtg_cas05,276,178,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas05 -1,6,6 payg_cas01,291,8,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas01 -1,6,6 payg_cas02,145,144,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas02 -1,6,6 payg_cas03,159,168,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas03 -1,6,6 payg_cas04,147,48,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas04 -1,6,6 payg_cas05,157,132,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas05 -1,6,6 aldeg_cas01,118,223,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas01 -1,8,8 aldeg_cas02,135,230,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas02 -1,8,8 aldeg_cas03,225,269,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas03 -1,8,8 aldeg_cas04,84,13,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas04 -1,8,8 aldeg_cas05,62,12,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas05 -1,8,8 gefg_cas01,154,112,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas01 -1,6,6 gefg_cas02,140,116,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas02 -1,6,6 gefg_cas03,271,290,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas03 -1,6,6 gefg_cas04,116,119,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas04 -1,6,6 gefg_cas05,144,110,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas05 -1,6,6
-
On 6/27/2017 at 2:28 AM, Christopher Freitas said:
@Noctis
PagliaHost, preço justo e excelente qualidade !!um lixo pagliahost
-
On 7/25/2019 at 10:03 PM, HD Scripts said:
Irei testar.
Caso funcione o comando @fontcolor, será que daria pra setar uma variável padrão do emulador que é iniciada quando o mesmo inicia?
#edit
Então, eu testei o comando @fontcolor, e o mesmo não funciona como eu imaginei.
Terei que estudar como criar os canais corretamente.Se não me engano isso é um opcional que da para aplicar no diff do hedex.
-
no console apresenta algum erro ?
-
Eu uso um emulador de 2014 e tá funcionando normal. Pode ser alguma mudança no código do emulador que fez alguma configuração do mooka ficar obsoleta
-
Show, usei aqui no hedex 2012-04-10 e ta funcional tbm
-
2 hours ago, DoomSlayer said:
pode postar o resto do script? acho que isto deve funcionar
- script MvPCash FAKE_NPC,{ end; OnNPCKillEvent: if (getmonsterinfo(killedrid,22)){ //Se o monstro der Exp de MvP vai dar CASH dispbottom "Você Ganhou 50 Pontos de Cash"; set #CASHPOINTS, #CASHPOINTS + 50; } end; }
Quote- script mvpcash -1,{ OnInit: setarray .mobid[0],1059,1647,1511,1651,1650,1785,1039,1399,1874,1086,1871,2068,1502,1251,1719,1046,1389,1112,1115,1658,1157,1150,1159,1312,1885,1252,1832,1734,1779,1630,1688,1646,1147,1708,1648,1917,1087,1038,1768,1623,1492,1272,1373,1190,1418,2022,1649,1583,1751,1685; OnNPCKillEvent: for (set .@c, 0; .@c < getarraysize(.mobid); set .@c, .@c + 1) if (killedrid == .mobid[.@c]) set .@s, 1; // If a MvP if (!.@s) end; dispbottom "Você Ganhou 50 Pontos de Cash"; set #CASHPOINTS, #CASHPOINTS + 50; end; }
Esse é ele completo.
Edit.
Testei seu script agora, mas ao matar 1 mvp ele não da cash porem tbm n apresenta erro.Funcionou sim, eu que fui desatento e não tirei o comentário do script que habilita os npcs. E além de ter tirado uma duvida minha tbm. Pois sempre que uso 1-{ para tornar o npc invisível dava erro. Agora usei o fake_npc,{ e o sv já n tem mais erro.Valeu pela ajuda @DoomSlayer
-
Boa noite pessoa, estou com esse npc que da 50 de cash para quem matar os mvps listados, porem ao adicionar o script no emulador e ligar, ele apresenta o erro da imagem. Alguém saberia como resolver?
QuoteOnNPCKillEvent: for (set .@c, 0; .@c < getarraysize(.mobid); set .@c, .@c + 1) if (killedrid == .mobid[.@c]) // a parte que acusa o erro. set .@s, 1; // If a MvP if (!.@s) end; dispbottom "Você Ganhou 50 Pontos de Cash"; set #CASHPOINTS, #CASHPOINTS + 50; end; }
-
Aberta as portas do modem ? Desligou Firewall ? ta usando o mesmo ip que o hamachi ta lhe dando no seu clientinfo.xml e no conf?
-
não esta tendo conexão map_athena. tem alguma configuração errada
-
Boa tarde pessoal queria saber qual é a função no script que alterar uma variável para uma string. pois no cronus usávamos [function implode] porem no rAthena eu não sei qual.
Alguém poderia me ajudar?
segue o script abaixo
Spoiler//===== Script ======================================================================= //= (Jogo da Forca) //===== By: ================================================================================== //= by Candy //===== Current Version: ===================================================================== //= um Simples jogo de Jogo da Forca //===== Additional Comments: ================================================================= // 1.4 Traduzido por: Renato Guedes ( Thor ) // 1.5 Alterado o Nome do NPC para "Jogo da Forca" //============================================================================================ prontera,154,204,4 script Jogo da Forca 935,{ //=== Configurations ====================================================================== set .@npc$ , "^0000FF[Jogo da Forca]^000000" ; // Nome do NPC. set .@minlength , 4 ; // char no mínimo no mapa set .@maxlength , 12 ; // não podemos ver mais de 12 personagens em um chatroom... set .@color$ , "^792d5b" ; // A cor de colorise o texto °° set .@rungame , 0 ; // M nível mínimo para configurar o NPC (padrão 0) set .@logword , 0 ; // Log a palavra entra pelas pessoas? 0 = não 1 = sim (logmes + debugmes) set .check_gotocount, 2048 ; // Limite de loop infinito. set .autoevent , 1 ; // Por padrão todos os 30 minutos. set .cutinposition , 2 ; // 0, 1 , 2 , 3 , 4 (Ver o doc) //========================================================================================= //=== Functions ============================================================================ function change_case ; // Função para alterar o caso de uma letra. function array_search ; // Retorna um valor que é armazenar em um array. function str_to_array ; // Alterar uma string para uma variável. function implode ; // Alterar uma variável para uma string. function load_cutin ; //========================================================================================= switch( ( ! .block && .@rungame > getgmlevel() ) ? 2 : .block ) { case 0: do { // Carregar as definições. if ( ! .init ) donpcevent strnpcinfo(0) + "::OnInit" ; //Inicializar o jogador/NPC.. set .block , 1 ; // Não bloquear o NPC. set .@string$ , "" ; // init the var. initnpctimer ; // Timer para depurar. mes .@npc$ ; mes "Insira uma palavra com " + .@color$ + .@minlength + "^000000 ate " + .@color$ + .@maxlength + "^000000 caracteres." ; mes "( " +.@color$ + "\"0\"^000000 para sair )" ; next ; while( input( .@string$, .@minlength, .@maxlength ) || ! str_to_array( .@string$ , ".letter$" ) ) { // "0" --> "exit". if ( .@string$ == "0" ) { close2; set .block , 0 ; cleararray .letter$[0] , "" , 128 ; end ; } mes .@npc$ ; mes "O tamanho da palavra estar incorreto ou existe um caractere invalido." ; next ; mes .@npc$ ; mes "Insira uma palavra de " + .@color$ + .@minlength + "^000000 para " + .@color$ + .@maxlength + "^000000 caracteres" ; next ; } mes .@npc$ ; mes "Use \"" + .@color$ + .@string$ + "^000000\" ?" ; next ; set .init , 0 ; } while ( select( " - Sim: - Não" ) == 2 ) ; AutoSelect: set .lettercount , getarraysize( .letter$ ) - 1 ; // Char número. set .wordsearch$ , .@string$ ; // Salvar em um "." var. if ( .@logword && playerattached() ) // Para evitar um erro, se é um autoevent (jogador não está em anexo) { logmes "|Jogo da Forca| " + strcharinfo(0)+ " digite uma palavra : " + .@string$ ; debugmes "|Jogo da Forca| " + strcharinfo(0) + " digite um mote : " + .@string$ ; } for ( set .@i , 0 ; .@i < .lettercount ; set .@i , .@i + 1 ) // Criamos o " _ _ _ _" string. { set .letterhide$[ .@i ] , " _" ; } set .letterhide$[ 0 ], .letter$[ 0 ] ; // Mostramos a primeira letra. set .letterhide$[ .lettercount ], .letter$[ .lettercount ] ; // Mostramos a última letra. for ( set .@i , 0 ; .@i < .lettercount ; set .@i , .@i + 1 ) { set .@j , ( array_search ( .letter$[ 0 ] , ".letter$" , .@i , .lettercount ) ) ; if ( .@j + 1 ) { set .letterhide$[ .@j ], .letter$[ .@j ] ; set .@i , .@j ; } } for ( set .@i , 0 ; .@i < .lettercount ; set .@i , .@i + 1 ) { set .@j, ( array_search( .letter$[ .lettercount ] , ".letter$" , .@i , .lettercount ) ) ; if ( .@j + 1 ) { set .letterhide$[ .@j ], .letter$[ .@j ] ; set .@i, .@j ; } } set .wordfind$ , implode( "" , ".letterhide$" ) ; initnpctimer ; delwaitingroom ; waitingroom .wordfind$ , 0 ; // Criar o Chat-Room set .block , 3 ; // desbloquear o jogo. if ( playerattached() ) close ; else end ; case 1: // Alguém está a criação do NPC. mes .@npc$ ; mes "Alguem esta criando o jogo..." ; mes "Aguarde." ; close ; case 2: // Ele não pode config o NPC. mes .@npc$ ; mes "Você não pode iniciar o jogo!" ; close ; case 3: do { if ( .wordfind$ == "" ) { close2; cutin "" , 255 ; end; } mes .@npc$ ; mes .wordfind$ ; // Mostramos a palavra. load_cutin() ; mes "Letras já utilizadas: " + .@color$ + ( implode( " " , ".blacklist$" ) ) + "^000000." ; //Mostramos a lista. next ; if ( select( " - Digitar uma letra.: - Digitar a Palavra" ) - 1 ) { // digite uma palavra. mes .@npc$ ; mes "Se você já sabe a palavra? então digite ela toda!" ; next ; input @string$ ; if ( compare( "_|~key~|_" + @string$ + "_|~key~|_" , "_|~key~|_" + .wordsearch$ + "_|~key~|_" ) ) { announce strcharinfo( 0 ) + " Encontrou a palavra: " + .wordsearch$ + " !", bc_blue | bc_map ; donpcevent strnpcinfo( 0 ) + "::OnInit" ; //On Reset. mes .@npc$ ; mes "Parabéns !" ; close2 ; cutin "" , 255 ; end ; } else { mes .@npc$ ; mes "A palavra esta errada." ; load_cutin( 1 ) ; next ; continue ; } } // Input letter : mes .@npc$ ; mes "Escolha uma letra" ; mes "(" +.@color$ + " 0^000000 para sair. )" ; next ; if ( input( @string$ , 1 , 1 ) ) { mes .@npc$ ; mes "Ops! digite só uma letra." ; mes "Obrigado!" ; next ; continue ; } if ( @string$ == "0" ) { close2 ; cutin "" , 255 ; end ; } set @string$ , change_case( @string$ ) ; if ( @string$ == "0" ) // Se não for uma letrar (alfabeto aA-zZ) { mes .@npc$ ; mes "Caracteres Proibido." ; next ; continue ; } else if ( array_search ( @string$ , ".blacklist$") + 1 ) // Letra já utilizado. { mes .@npc$ ; mes "Esta letra é já foi dita (veja a lista)" ; mes "Eescolha uma outra." ; next ; continue ; } set .blacklist$[ getarraysize( .blacklist$ ) ] , @string$ ; // Colocamos a letra na lista. set @i , array_search( @string$, ".letter$") ; if ( @i == -1 ) // A letra não está na palavra. . { heal - MaxHP / 5 , 0 ; //Vida divised por 5. mes .@npc$ ; mes "Não é possível encontrar a letra na palavra..." ; load_cutin( 1 ) ; next ; continue ; } else { mes .@npc$ ; mes "Letra está na palavra !" ; for ( set @i , 0 ; @i < .lettercount ; set @i , @i + 1 ) { set @j , ( array_search( @string$ , ".letter$" , @i , .lettercount ) ) ; if ( @j + 1 ) { set .letterhide$[ @j ], .letter$[ @j ] ; set @i, @j ; } } set .wordfind$ , implode( " " , ".letterhide$" ) ; delwaitingroom ; // devemos atualizar o chat-room nome waitingroom .wordfind$ , 0 ; if ( array_search( " _" , ".letterhide$" ) == -1 ) //Se todas as letras são encontrar. { announce strcharinfo( 0 ) + " Descobriu a palavra: " + .wordsearch$ + " !", bc_blue | bc_map ; donpcevent strnpcinfo( 0 ) + "::OnInit" ; close2 ; cutin "" , 255 ; end ; } next ; if ( select( " - Continuar: - Sair" ) - 1 ) { close2 ; cutin "" , 255 ; end ; } } } while( HP ) ; // O jogador é mort x) mes .@npc$ ; mes "Ahhhh, Você Perdeu..." ; announce "|Jogo da Forca| " + strcharinfo( 0 ) + " Perdeu! e acaba de ser morto" , bc_blue | bc_area ; close2 ; cutin "" , 255 ; end ; } OnInit: delwaitingroom ; set .block , 0 ; set .init , 1 ; set .stat , 0 ; cleararray .letter$[ 0 ] , "" , 128 ; cleararray .blacklist$[ 0 ] , "" , 128 ; cleararray .letterhide$[ 0 ] , "" , 128 ; set .lettercount , 0 ; set .wordfind$ , "" ; set .wordsearch$ , "" ; setarray .wordlist$[0], //Por favor, é só usar Aa-Zz personagens! "eathena", "bored", "keyworld", "kissme", "mysevername", "poring", "lunatic", "fabre", "noidea"; end ; OnMinute00: OnMinute30: if ( .autoevent ) { set .@i , rand ( 0 , getarraysize( .wordlist$ ) - 1 ) ; str_to_array( .wordlist$[.@i] , ".letter$" ) ; set .@string$ , .wordlist$[.@i] ; callsub AutoSelect; } //Debug OnTimer120000: if ( .block - 1 ) end ; else { set .block , 0 ; stopnpctimer ; } OnTimer600000: donpcevent strnpcinfo(0) + "::OnInit" ; stopnpctimer ; end ; //=== FUNCTIONS =========================================================================== function load_cutin { if ( getarg( 0 , 0 ) ) set .stat , .stat + 1 ; cutin "hangman_" + .stat , .cutinposition ; if ( .stat >= 10 ) { announce "|Jogo da Forca| Ninguem encontrara a palavra! hahaha! " , bc_blue | bc_area ; donpcevent strnpcinfo(0) + "::OnInit" ; } return ; } function change_case { setarray .@char$[ 0 ], "A" , "B" , "C" , "D" , "E" , "F" , "G", "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" ; for( set .@i , 0 ; .@i < 26 ; set .@i, .@i + 1 ) { if ( compare( getarg( 0 ) , .@char$[ .@i ] ) ) { return .@char$[ .@i ] ; } } return "0" ; } function array_search { for ( set .@i , getarg(2,0) ; .@i < getarg( 3, getarraysize( getd( getarg(1) ) ) ) ; set .@i , .@i + 1 ) { if ( getd( getarg( 1 ) + "[" + .@i + "]" ) == getarg( 0 ) ) { return .@i ; } } return -1 ; } function str_to_array { if ( getstrlen( getarg(0) ) >= 110 ) { return 0 ; } if ( atoi( getd( getarg(1) ) ) ) { cleararray getd( getarg(1) + "[ 0 ]" ) , 0 , 128 ; } else { cleararray getd( getarg(1) + "[ 0 ]" ) , "" , 128 ; } setarray .@char$[ 0 ], "A" , "B" , "C" , "D" , "E" , "F" , "G", "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" ; set .@j , 0 ; set .@str_temp$, "_|~key~|_" + getarg(0) + "_|~key~|_" ; while( ! compare ( "_|~key~|_" + .@str$ + "_|~key~|_" , .@str_temp$ ) ) { set .@j , .@j + 1 ; for ( set .@i , 0 ; .@i <= getarraysize(.@char$) ; set .@i , .@i + 1 ) { if ( compare( .@str_temp$ , "_|~key~|_" + .@str$ + .@char$[ .@i ] ) ) { set .@str$ , .@str$ + .@char$[ .@i ] ; setd getarg(1) + "[" + getarraysize( getd( getarg(1) ) ) + "]" , .@char$[ .@i ] ; break; } } // Caracteres não encontrado. if ( .@i == getarraysize( .@char$ ) ) return 0 ; if ( .@j >= .check_gotocount / getarraysize(.@char$) - 1 ) { sleep2( 1 ) ; set .@j , 0 ; } } return 1 ; } function implode { set .@str_temp$ , "" ; for ( set .@i , 0 ; .@i < getarraysize( getd( getarg(1) ) ) ; set .@i , .@i + 1 ) { set .@str_temp$ , .@str_temp$ + getarg( 0 , "" ) + getd( getarg( 1 ) + "[" + .@i + "]" ) ; } return .@str_temp$; } }
-
-
-
Version 26 2012-4-10 já é 30 ou 31
-
Boa noite pessoal. Eu estou voltando a ativa com ragnarok depois de ter parado em 2012. Vi que muita coisa mudou.
Gostaria de saber como eu consigo a Data para fazer a grf para por em meu servidor. pois estou querendo usar eamod com cliente 2012-04-10 porem n acho nenhum repositorio com data para usar.
-
49 minutes ago, luizragna said:
Talvez o problema seja falta de quebra de linhas.
Aonde está:
switch (@Tema) { case 14: soundeffectall "assassin_of_sunset.wav",0,24,@mapa$,0,0,50,50; break; case 12: soundeffectall "in_to_the_abyss.wav",0,24,@mapa$,0,0,50,50; break; case 11: soundeffectall "dont_forget_me_not.wav",0,24,@mapa$,0,0,50,50; break; case 7: soundeffectall "ring_of_nibelungen.wav",0,24,@mapa$,0,0,50,50; break; case 5: soundeffectall "bragis_poem.wav",0,24,@mapa$,0,0,50,50; break; case 2: soundeffectall "chaos_of_eternity.wav",0,24,@mapa$,0,0,50,50; break; default: soundeffectall @Tema$,0,24,@mapa$,0,0,50,50; break; }
Tente trocar por:
switch (@Tema) { case 14: soundeffectall "assassin_of_sunset.wav",0,24,@mapa$,0,0,50,50; break; case 12: soundeffectall "in_to_the_abyss.wav",0,24,@mapa$,0,0,50,50; break; case 11: soundeffectall "dont_forget_me_not.wav",0,24,@mapa$,0,0,50,50; break; case 7: soundeffectall "ring_of_nibelungen.wav",0,24,@mapa$,0,0,50,50; break; case 5: soundeffectall "bragis_poem.wav",0,24,@mapa$,0,0,50,50; break; case 2: soundeffectall "chaos_of_eternity.wav",0,24,@mapa$,0,0,50,50; break; default: soundeffectall @Tema$,0,24,@mapa$,0,0,50,50; break; }
pior que já tentei isso tbm e ainda persiste no erro
-
Salve pessoal. Estou com esse problema
E na linha 519 diz [Error]: Loading NPC file: npc/personalizado/casas/Vilas_Configuracoes.txt
script error on npc/personalizado/casas/Vilas_Configuracoes.txt line 519
parse_line: need ';'eu tentei de tudo, mas n consegui corrigir alguém da um help por favor?
//===== Cronus Script ======================================== //= Funções Compartilhadas - Casas Para Aluguel //===== Por: ================================================= //= Zephyrus //=====Tradução Português - BR Por: ========================== //= Nosyel //===== Verção Atual: ===================================== //= 1.0 - Iniciado por Zephyrus //= 1.1 - Corrigido Bugs nos Mapas por Zephyrus //= 2.0 - Tradução e Adaptação Para o Cronus por Nosyel //===== Compatível com: ===================================== //= eAthena SVN Stable & Cronus SVN Stable e Trunck //===== Descrição: ========================================= //= Contém as funções nescessárias para o sistema de Aluguel de Casas //===== Comentários Adicionais: ================================= //= 1.0 Versão Inicial //============================================================ //= Função para o npc, entrada das casas de campo //= (Número de casa de campo, custo da propriedade, número de casas) //============================================================ function script rent_villas { set @t, getarg(3); show "^FF0000[Vila " + getarg(0) + "]^000000"; show "O melhor lugar para se morar..."; show "" + @t + " Casas Para Aluguel."; show "Custo da propriedade: ^0000FF" + getarg(1) + " zeny^000000"; set @j, 22; for (set @i, 1; @i <= @t; set @i, @i + 1) { if (getd("$house" + getarg(2) + @i + "_rent") == 1) set @j, @j - 1; } if (@j == 0) show "Não há nenhuma propriedade disponível."; else show "Propriedades disponíveis: ^0000FF" + @j + "^000000."; close; } //============================================================ //= Funções do quadro indicador que mostra os proprietários e as opções de GM //= (identificação da casa de campo, e a quantidade de casas) //============================================================ function script rent_letrero { show "[Informação de Aluguel]"; show "Proprietários Atuais:"; set @t, getarg(1); for (set @i, 1; @i <= @t; set @i, @i + 1) { if (getd("$house" + getarg(0) + @i + "_rent") == 1) { if (@Color$ == "^0000FF") set @Color$, "^FF0000"; else set @Color$, "^0000FF"; // Detalhes da Casa show @Color$ + "Casa Nº " + @i + " Alugada para " + getd("$house" + getarg(0) + @i + "_user$") + "."; if (getgmlevel()) show "Alcançado " + getd("$house" + getarg(0) + @i + "_accesos") + " tempo da última restauração"; show "Fim: " + getd("$house" + getarg(0) + @i + "_buy_day") + "-" + getd("$house" + getarg(0) + @i + "_buy_month") + "-" + getd("$house" + getarg(0) + @i + "_buy_year") + ".^000000"; } } if (getgmlevel()) goto L_GMmenu; close; L_GMmenu: next; menu "Liberar uma casa",L_Liberar,"Liberar Todas as Casas",L_Limpiar,"Cancelar",-; L_Salir: show "^FF0000[Informação de Aluguel]^000000"; show "Função para acesso adiministrativo"; show "Até Logo..."; close; L_Limpiar: show "^FF0000[Informação de Aluguel]^000000"; for (set @i, 1; @i <= @t; set @i, @i + 1) { setd "$house" + getarg(0) + @i + "_access", 0; } show "Casa Resetada."; close; L_Liberar: show "^FF0000[Informação de Aluguel]^000000"; show "Você quer liberar uma casa?(1 - " + @t + ")"; show "Entre com o número da casa que você quer liberar. (0 ou maior que " + @t + " para cancelar)."; next; input @house; if (@house < 1) goto L_Salir; if (@house > @t) goto L_Salir; if (getd("$house" + getarg(0) + @house + "_rent") == 1) { show "^FF0000[Informação de Aluguel]^000000"; setd "$house" + getarg(0) + @house + "_rent", 0; show "A Casa " + @house + " Foi Liberada."; killmonsterall "rentin" + getarg(0) + @house + ".gat"; // Mata os monstro pequenos } else { show "^FF0000[Informação de Aluguel]^000000"; show "Desculpe-me, mais esta Casa ja tem Locatário"; show "Por Favor selecione um número diferente."; } close; } //============================================================ //= Função das Kafras (Teleporte para outras vilas). //============================================================ function script rent_kafra { cutin "kafra_007.bmp",2; show "^FF0000[Kafra]^000000"; show "Olá, Seja Bem Vindo!"; show "Eu posso teleportá-lo a uma vila diferente por 2000z."; if (Zeny < 2000) { show "Oh. .parece que você não tem bastante dinheiro. Você precisa de pagar-me ^FF00002000 zeny^000000 para que eu possa teleportá-lo ^^"; cutin "", 255; close; } show "Onde você quer ir? Todos os preços são os mesmos."; next; menu "Prontera",L_Prontera,"Vila Prontera",L_VProntera,"Vila Geffen",L_VGeffen,"Vila Morroc",L_VMorroc,"Vila Payon",L_VPayon,"Vila Alberta",L_VAlberta,"Vila Izlude",L_VIzlude,"Vila Aldebaran",L_VAldebaran,"Nenhuma",-; show "^FF0000[Kafra]^000000"; show "Volte Quando Você Precisar de Meus Serviços, Tenha Um Bom Dia ^^"; cutin "", 255; close; L_Prontera: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "prontera.gat",156,191; end; L_VProntera: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mb.gat",133,113; end; L_VGeffen: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_md.gat",50,28; end; L_VMorroc: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mc.gat",50,28; end; L_VPayon: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_ma.gat",50,28; end; L_VAlberta: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_me.gat",50,28; end; L_VIzlude: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mf.gat",50,28; end; L_VAldebaran: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mg.gat",50,28; end; } //============================================================ //= Função dos quadros indicadores (Fala as opções dos Proprietários e as opções de GM) //= (identificação da casa de campo, propriedade custo, uma quantidade de casas) //============================================================ function script rent_propietario { cutin "proprietario.bmp",2; show "^0000FF[Proprietário]^000000"; show "Olá, Seja Bem Vindo a Agência de Alugueis de Casa!"; show "Eu Alugo Casas!"; show "Você esta interessado em alguma?"; next; set @t, getarg(2); L_next1: menu "Sim, Concerteza!",L_rent,"Poderia Me Dar Mais Informações?",L_Info,"Não, Obrigado.",-; show "^0000FF[Proprietário]^000000"; show "Sinta-se livre para retornar quando você tiver interessado."; cutin "", 255; close; L_Info: show "^0000FF[Proprietário]^000000"; show "Eu Tenho" + @t + " Casas e Propriedades."; show "Bem, você pode alugar uma casa de mim."; show "A fixação do preço depende do tempo que você quer a casa."; show "O custo mensal é de " + getarg(1) + " zenys."; show "Quando o contrato se acaba, você pode estendê-lo ou sair da casa para outros poderem alugar."; next; goto L_next1; L_rent: show "^0000FF[Proprietário]^000000"; show "Quantos meses você quer alugar?"; show "(Maximo é 3 Meses)"; next; L_next2: input @mo; if (@mo < 1) goto L_next2; if (@mo > 3) goto L_next2; menu @mo + " meses esta bom",-,"Change the number of months",L_next2,"Voltar ao Menu Anterior",L_next1; set @costo, @mo * getarg(1); show "^0000FF[Proprietário]^000000"; show "Para entrar em sua casa, você precisa de cadastrar uma senha."; show "Por favor insira sua senha de usuário da casa."; next; L_next3: input @pwg$; if(@pwg$ == "") goto L_next3; menu @pwg$ + " -Esta Correto.",-,"Tentar de Novo",L_next3,"Voltar ao Menu Anterior",L_next1; show "^0000FF[Proprietário]^000000"; show "Entre por favor com a senha que seus convidados podem usar."; next; L_next4: input @pwb$; if(@pwb$ == "") goto L_next4; menu @pwb$ + "-Esta Correto.",-,"Tentar de Novo",L_next4,"Voltar ao Menu Anterior",L_next1; show "^0000FF[Proprietário]^000000"; show "Deixe-me rever o contrato..."; show "Para alugar uma casa nesta vila,"; show "Custa: " + @costo + " Por " + @mo + " month(s)."; show "Senha: " + @pwg$; show "Senha de Convidados: " + @pwb$; show "Você quer a casa?"; next; menu "Sim",-,"Não, Eu Desisti",L_Salir; set @current,0; for (set @current, 1; @current <= @t; set @current, @current + 1) { if (getd("$house" + getarg(0) + @current + "_rent") != 1) goto L_Alquilar; } show "^0000FF[Proprietário]^000000"; show "Desculpe-me amigo mais eu não tenho mais nenhuma casa disponível."; show "Volte por favor um outro dia."; cutin "", 255; close; L_Alquilar: if (Zeny < @costo) goto L_NoZeny; set Zeny, Zeny - @costo; setd "$house" + getarg(0) + @current + "_rent", 1; setd "$house" + getarg(0) + @current + "_user$",strcharinfo(0); setd "$house" + getarg(0) + @current + "_passwort$",@pwg$; setd "$house" + getarg(0) + @current + "_userps$",@pwb$; setd "$house" + getarg(0) + @current + "_buy_day",gettime(5); setd "$house" + getarg(0) + @current + "_buy_month",gettime(6) + @mo; setd "$house" + getarg(0) + @current + "_buy_year",gettime(7); setd "$house" + getarg(0) + @current + "_accesos",0; if (getd("$house" + getarg(0) + @current + "_buy_month") > 12) { setd "$house" + getarg(0) + @current + "_buy_year", getd("$house" + getarg(0) + @current + "_buy_year") + 1; setd "$house" + getarg(0) + @current + "_buy_month", getd("$house" + getarg(0) + @current + "_buy_month") - 11; } show "^0000FF[Proprietário]^000000"; show "Parabéns " + strcharinfo(0)+"!"; show "Você alugou com sucesso uma casa!"; show "O Número de Sua Casa é " + @current + "."; show "Faça Bom Proveito!"; cutin "", 255; close; L_Salir: show "^0000FF[Proprietário]^000000"; show "Sem Problemas, Retorne Quando Mudar de Idéia."; cutin "", 255; close; L_NoZeny: show "^0000FF[Proprietário]^000000"; show "Hein? Desculpe mais você não tem zeny suficiente para alugar uma de minhas Casas."; show "Por favor retorne quando tiver o suficiente."; cutin "", 255; close; } //============================================================ //= Função do quadro indicador (proprietários das casas e opções do gm) //= (identificação da casa, custo da propriedade, X, Y) //============================================================ function script rent_entrada { if (getd("$house" + getarg(0) + "_rent") == 1) goto L_Inicio; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Esta casa está disponível para aluguel!"; close; L_Inicio: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Esta Casa Pertence a ^0000FF'" + getd("$house" + getarg(0) + "_user$") + "'.^000000"; if (getgmlevel()) show "Acesado ^0000FF" + getd("$house" + getarg(0) + "_accesos") + "^000000 tempo."; show "Você deseja entrar?"; next; menu "Sim",L_Accesar,"Manutenção",L_Conf,"Não",-; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "...."; close; L_Accesar: if (getgmlevel()) goto L_Acceso; // Access for GMs without the key show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Entre por favor com a senha de proprietário ou de convidado."; next; input @pw$; if ((@pw$ != getd("$house" + getarg(0) + "_passwort$")) && (@pw$ != getd("$house" + getarg(0) + "_userps$"))) goto L_ErrorClave; L_Acceso: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Correto, Pode entrar..."; close2; setd "$house" + getarg(0) + "_access",getd("$house" + getarg(0) + "_accesos") + 1; warp "rent" + getarg(0) + ".gat",getarg(2),getarg(3); end; L_Conf: if (getgmlevel()) goto L_ConfGM; // Alcance para GMs sem a chave show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Por favor entre com a Senha da Propriedade."; next; input @pw$; if (@pw$ != getd("$house" + getarg(0) + "_passwort$")) goto L_ErrorClave; L_ConfGM: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "O que você quer fazer?"; next; L_MMenu: menu "Mudar Minha Senha",L_CambioPW,"Muda senha de convidado",L_CambioGPW,"Extender Contrato",L_Extender,"Mudar Dono",L_Owner,"Liberar Propriedade",L_Liberar,"Nada",-; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Ok, Nos vemos em breve."; close; L_Extender: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Você deseja estender seu contrato para um outro mês? (Costo " + getarg(1) + " zeny)"; show "Esta Correto?"; next; menu "Sim",L_DExtender,"Não",-; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Bem..."; next; goto L_MMenu; L_DExtender: if (zeny < getarg(1)) goto L_NoZeny; if (gettime(6) < (getd("$house" + getarg(0) + "_buy_month") - 1)) goto L_NoExt; setd "$house" + getarg(0) + "_buy_month", getd("$house" + getarg(0) + "_buy_month") + 1; if (getd("$house" + getarg(0) + "_buy_month") > 12) { setd "$house" + getarg(0) + "_buy_month", getd("$house" + getarg(0) + "_buy_month") - 12; setd "$house" + getarg(0) + "_buy_year", getd("$house" + getarg(0) + "_buy_year") + 1; } set Zeny, Zeny - getarg(1); show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Seu contrato foi extendido com sucesso."; close; L_NoZeny: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Você não tem zeny suficiente!"; show "Por favor volte quando tiver zeny suficiente."; close; L_NoExt: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Você esta com um contrato máximo. Por favor volte quando faltar menos de 1 mês."; close; L_CambioPW: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Por favor entre com sua senha nova"; next; input @pw$; setd "$house" + getarg(0) + "_passwort$", @pw$; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Sua senha nova é: " + @pw$ + "."; next; goto L_MMenu; L_CambioGPW: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Por favor entre com a senha nova de convidado."; next; input @pw$; setd "$house" + getarg(0) + "_userps$", @pw$; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Sua senha nova de convidado é: " + @pw$ + "."; next; goto L_MMenu; L_ErrorClave: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "A senha esta incorreta!"; close; L_Owner: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Locatário Recente: '" + getd("$house" + getarg(0) + "_user$") + "'"; show "Novo Locatário: '" + strcharinfo(0) + "'"; show "Esta Correto?"; next; menu "Sim, Mude",L_DOwner,"Não...",-; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Bem..."; next; goto L_MMenu; L_DOwner: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; setd "$house" + getarg(0) + "_user$",strcharinfo(0); show "A casa agora tem um novo locatário."; show "Por favor mude as senhas."; next; goto L_MMenu; L_Liberar: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Você quer reincidir o contrato e liberar a casa?"; show "Não terá seu dinheiro de volta."; next; menu "Sim, quero liberar a casa",L_DLiberar,"Não...",-; show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "Bem..."; next; goto L_MMenu; L_DLiberar: show "^0000FF[Propriedade " + getarg(0) + "]^000000"; show "A propriedade foi liberada para um novo locatário."; setd "$house" + getarg(0) + "_rent", 0; killmonsterall "rentin" + getarg(0) + ".gat"; close; } //============================================================ //= Função de controle de arvores de maçãs //= (id da casa) //============================================================ function script rent_manzano { if (getd("$@Manzanas" + getarg(0)) > 0) { setd "$@Manzanas" + getarg(0), getd("$@Manzanas" + getarg(0)) - 1; specialeffect2 363; getitem 512, 1; } end; } //============================================================ //= Função para controlar o PvP. //============================================================ function script rent_pvp { if (getmapxy(@mapa$,@mapx,@mapy,0,strcharinfo(0)) != 0) end; show "[Controle PvP]"; show "O que você deseja fazer?"; next; menu "Ativar PVP",L_PvpOn,"Desativar PVP",L_PvpOff,"Nada",-; show "[Controle PvP]"; show "Bom Dia."; close; L_PvpOn: show "[Controle PvP]"; show "O PVP esta ativado."; pvpon @mapa$; close; L_PvpOff: show "[Controle PvP]"; show "O PVP esta desativado"; pvpoff @mapa$; close; } //============================================================ //= Cama!!!! //= (id da casa,X,Y) //============================================================ function script rent_camas { show "Desja descançar?"; menu "Sim",-,"Não",L_No; close2; sc_start SC_BLIND,500000,1; emotion e_yawn,1; sleep2(4000); warp "rentin" + getarg(0) + ".gat",getarg(1),getarg(2); percentheal 100,100; sc_end SC_BLIND; end; L_No: close; } //============================================================ //= Função do piano //= (id da casa) //============================================================ function script rent_pianoStart { if (getmapxy(@mapa$,@mapx,@mapy,0,strcharinfo(0)) != 0) end; show "[Piano Automático]"; if (getd("$@Piano" + getarg(0)) > 0) { show "Espere um pouco até que a canção termine ou que o piano esteja preparado outra vez."; close; } show "[Piano]"; show "Aviso: Minhas funções ainda não estão completamente implementadas, Aguarde ..."; show "Escolha por favor uma canção."; set @Tema, select ("Música 01","Caos da eternidade","Música 03","Música 04","Bragis Poema","Música 06","Anel de Nibelungen","Música 08","Música 09","Música 10","Não me esqueça não","Ao abismo","Música 13","Assassino do por do sol","Música 15","Música 16","Música 17","Música 18","Música 19","Nada"); if (@Tema >= 20) close; if (@Tema < 10) set @Tema$, "m0" + @Tema + ".wav"; else set @Tema$, "m" + @Tema + ".wav"; close2; if (getd("$@Piano" + getarg(0)) <= 0) { // Tocar o Tema Escolhido setd "$@Piano" + getarg(0), 1; // Reproduzindo initnpctimer; switch (@Tema) { case 14: soundeffectall "assassin_of_sunset.wav",0,24,@mapa$,0,0,50,50; break; case 12: soundeffectall "in_to_the_abyss.wav",0,24,@mapa$,0,0,50,50; break; case 11: soundeffectall "dont_forget_me_not.wav",0,24,@mapa$,0,0,50,50; break; case 7: soundeffectall "ring_of_nibelungen.wav",0,24,@mapa$,0,0,50,50; break; case 5: soundeffectall "bragis_poem.wav",0,24,@mapa$,0,0,50,50; break; case 2: soundeffectall "chaos_of_eternity.wav",0,24,@mapa$,0,0,50,50; break; default: soundeffectall @Tema$,0,24,@mapa$,0,0,50,50; break; } } end; } function script rent_pianoStop { emotion e_no1; stopnpctimer; setd "$@Piano" + getarg(0), 0; // Fim das Músicas end; } //============================================================ //= Armário //============================================================ function script rent_armario { show "[Armazem]"; show "Deseja usar o Armazém?"; menu "Sim",-,"Não",L_No; callfunc("F_CheckKafCode"); close2; openstorage; end; L_No: close; } //============================================================ //= Serviço de Limpesa //============================================================ //============================================================ //= Calcule o seguinte ponto X e Y //= (Posição X o Y) //============================================================ function script rent_aliceXY { set .@CP, getarg(0); // Posição X o Y set .@DST, rand(1,5); // Distância if (rand(2)) // Direção a ser tomada (izq der arr abj) set .@CP, .@CP + .@DST; else set .@CP, .@CP - .@DST; if (.@CP < getarg(1)) set .@CP, .@CP + .@DST; // Se o ponto novo é menor, aquele é o mínimo if (.@CP > getarg(2)) set .@CP, .@CP - .@DST; // Se o ponto novo é maior, aquele é o máximo return .@CP; } //============================================================ //= Esconde Alice quando o usuário é carregado //= (Id da casa) //============================================================ function script rent_serviceInit { disablenpc "AliceR" + getarg(0) + ""; end; } //============================================================ //= Função para o pedido de NPC //= (Id da casa) //============================================================ function script rent_serviceCall { set @alicecost,5000; // Variável para mudar o custo do serviço [Brainstorm] show "[Serviço de Limpeza]"; if (getd("$@house" + getarg(0) + "_alice") == 0) { show "Você deseja ter Alice limpando por 8 horas?"; show "Quando limpar, os insetos cessarão de aparecer."; show "O serviço custa 5000z."; show "Você gostaria de chamar Alice?"; next; menu "Sim",-,"Não",L_No; if (Zeny < @alicecost) goto L_NoZeny; if (getd("$@house" + getarg(0) + "_alice") == 1) goto L_Activo; setd "$@house" + getarg(0) + "_alice", 1; // Activo set Zeny, Zeny - @alicecost; // Exterminio de insetos setd "$house" + getarg(0) + "_bugs", 0; killmonsterall "rentin" + getarg(0) + ".gat"; show "[Serviço de Limpeza]"; show "Alice estará em sua casa imediatamente."; enablenpc "AliceR" + getarg(0) + ""; // Ativando NPC donpcevent "AliceR" + getarg(0) + "::OnEmpezar"; // Iniciando Limpeza initnpctimer; } else { show "Você deseja despachar Alice agora?"; next; menu "Sim",-,"Não",L_No; if (getd("$@house" + getarg(0) + "_alice") == 0) goto L_Activo; setd "$@house" + getarg(0) + "_alice", 0; // Desativando show "[Serviço de Limpeza]"; show "Alice foi despachada, finalizado o Serviço de Limpeza."; stopnpctimer; donpcevent "AliceR" + getarg(0) + "::OnTerminar"; disablenpc "AliceR" + getarg(0) + ""; } close; L_Activo: show "[Serviço de Limpeza]"; show "Você já pediu uma Alice para limpar, você somente pode pedir uma Alice de cada vez."; show "Bom Dia."; close; L_NoZeny: show "[Serviço de Limpeza]"; show "Desculpe, mais você não tem zeny suficiente para pagar uma Alice."; close; L_No: show "[Serviço de Limpeza]"; show "Diga-me outra vez se você precisar de nossos serviços."; close; } //============================================================ //= Serviço de Kafra //= (Id da casa) //============================================================ function script rent_serviceFinish { stopnpctimer; setd "$@house" + getarg(0) + "_alice", 0; // Desativado donpcevent "AliceR" + getarg(0) + "::OnTerminar"; disablenpc "AliceR" + getarg(0) + ""; end; } //============================================================ //= Velocidade de locomoção da Alice //============================================================ function script rent_aliceInit { npcspeed 100; end; } //============================================================ //= O começo da função de Alice, ativa o temporizador de NPC e a saudação //============================================================ function script rent_aliceStart { npctalk "Eu deixarei este lugar todo em ordem!"; initnpctimer; return 0; } //============================================================ //= Movimentação da Alice //============================================================ function script rent_aliceWalk { emotion e_ho; getmapxy .@map$,.@x,.@y,1; set .@curX, callfunc("rent_aliceXY",.@x,8,35); set .@curY, callfunc("rent_aliceXY",.@y,5,27); npcwalkto .@curX, .@curY; stopnpctimer; initnpctimer; end; } //============================================================ //= Acontece somente quando você fala ou clica na Alice…! //= Adicione mais dentro se você quiser (Preima) //============================================================ function script rent_aliceTalk { switch (rand(1,5)) { case 1: npctalk "Sim senhor(a), a limpeza esta quase completa."; break; case 2: npctalk "Se você quer comer algo, vá à cozinha que eu lhe prepararei um lanche…"; break; case 3: npctalk "Eles não me pagam o bastante por isso!"; emotion e_pif; break; case 4: npctalk "Bem, eu tenho muita sorte só precisarei limpar apenas esta casa hoje."; emotion e_heh; break; case 5: npctalk "Nossa, sua casa esta repugnante!"; emotion e_wah; break; } end; } //============================================================ //= Finalização dos Serviços da Alice //============================================================ function script rent_aliceStop { npctalk "Prontinho Senhor(a), esta tudo em ordem agora!"; stopnpctimer; return 0; } //============================================================ //= Função de trocas de roupas //= Summer //============================================================ function script rent_cambioropa { show "[Guarda Roupas]"; show "Escolha o estilo de roupa desejado..."; menu "Normal",L_Normal,"Formal",L_Formal,"Natalina",L_Abrigo,"Verão",L_summer,"Não Trocar",-; close; L_Normal: sc_end SC_Xmas; setoption Option_Wedding,0; sc_end SC_Summer; close; L_Formal: sc_end SC_Xmas; sc_end SC_Summer; setoption Option_Wedding,1; close; L_Abrigo: setoption Option_Wedding,0; sc_start SC_Xmas,600000,0; close; L_summer: sc_end SC_Xmas; setoption Option_Wedding,0; sc_start SC_Summer,600000,0; close; }
- 1
[NPC] Sistema vip. Duvida sobre vip free
in Suporte a Configurações
Posted · Edited by Kassio Felix
Salve pessoal, estou usando esse npc para adicionar o vip, pois o emulador que estou usando é eAmod com rathena, porem é um emulador antigo e n tem suporte ao sistema vip original do rathena. gostaria de saber, se alguém pode fazer o script de dias vip grats, abaixo segue o sistema que estou usando.
E tenho esse vip grats aqui. porem com outra tabela.... Porem estou com muita dificuldade de fazer ele funcionar...
Consegui fazer funcionar, mas agradeço se alguém conseguir optimizar esse npc =D