· 4 years ago · Aug 24, 2021, 07:42 PM
1
2
3======== API ==========
4
5*APIAuth(<username>, <userid>);
6
7Loga na API, retornando o Token.
8
9
10======== DEV ==========
11
12*Debug(<text>, <splitter>);
13
14Adiciona um texto de debug ao emulador.
15
16Quando <splitter> for 1, adiciona uma linha separando os próximos debug.
17
18_________________________________________________________
19
20*MesInfo(<msg>);
21
22Mostra mensagem no console como info.
23
24======== Script ==========
25
26 Cores
27D - FF52434E
28DEFAULT - FF52434E
29BLUE - FF7588FF
30RED - FFF9544C
31YELLOW - FFF9AA4C
32GREEN - FF77AA4D
33PURPLE - FFBA4CF9
34PINK - FFF94CC2
35CYAN - FF26D495
36
37--------------------------------------------------------------------
38 >>>> Linguagem <<<<
39
40 Comandos que ajudam no suporte a multi linguagens
41--------------------------------------------------------------------
42
43*ML(<ptbr_text>, // Texto em PTBR
44 <spanish_text>, // Texto em Espanhol
45 <english_text>); // Texto em Inglês
46
47Retorna o texto referente a linguagem do jogador.
48
49_________________________________________________________
50
51*Sext(<male_text>,<female_text>);
52
53Retorna o texto de acordo com o sexo do personagem.
54
55Exemplo de Uso:
56 Show("Olá menin" + Sext("o", "a"));
57_________________________________________________________
58
59*SetLanguageName(<nome_npc>, // Nome Original do NPC no cabeçalho do script, que também é o nome em ptbr
60 <nome_npc_spn> // Nome do NPC em espanhol
61 <nome_npc>eng>); // Nome em Inglês
62
63Prepara o emulador para mostrar o nome do npc ao colocar o cursor em cima do NPC de acordo com
64o idioma do jogador.
65
66É altamente recomendado que ao criar um NPC que não tenha nome próprio, que adicione este
67comando no arquivo "displaynames.txt", seguindo o padrão.
68
69Eu falo recomendado, pois esse comando pode ser útil em npcs que são criados dinamicamente, então
70não necessariamente ele vai estar no OnInit do "DisplayNamesNpc.txt"!
71
72- Script DisplayNamesNpc -1,{
73
74 OnInit:
75 SetLanguageName("Vendedora de Frutas", "Vendedor de Frutas", "Fruit Seller"); // Academia
76 +++ SetLanguageName("Seu novo NPC aqui", "Mi nuevo npc aque", "My new NPC here"); // Exemplo
77 end();
78}
79
80--------------------------------------------------------------------
81 >>>> Diálogos <<<<
82
83 Comandos que interferem com o diálogo do jogo em si
84--------------------------------------------------------------------
85
86*Begin(<title>, // Nome do NPC
87 <ptbr_text>, // Texto em PTBR
88 <spanish_text>, // Texto em Espanhol
89 <english_text>, // Texto em Inglês
90 ---- Parâmetros Opcionais ---
91 {illust}, // Ilustração
92 {glaussian}, // 1 se for para aplicar efeito de foco
93 {char_id}); // Id do personagem
94
95Cria o dialogo de NPC.
96
97Há algumas cores predefinidas para maior agilidade e para seguir melhor a paleta de cores do cliente.
98Tente sempre utilizar umas delas quando possível.
99_________________________________________________________
100
101*Portrait(<illust.ext>)
102
103Altera a imagem atual de dialogo NPC. É preciso adicionar a extensão do arquivo!
104O por que disso? Vai que um dia queremos poder ter npcs com .gif!
105
106_________________________________________________________
107
108*FinishDialog()
109
110Encerra um dialogo de npc e encerra o script.
111Equivalente ao "close" do rAthena.
112
113_________________________________________________________
114
115*CloseDialog({<fix step>})
116
117Encerra um dialogo de npc, mas continua a execução do script.
118Equivalente ao "close2" do rAthena.
119
120O parametro <fix step> é opcional devido a um bug com Hemera.
121Quando uma tela é fechada subitamente, o click do mouse fica bugado
122e faz movimentar o jogador mesmo sem estar apertado.
123
124O comando close dialog por padrão adiciona um bloqueio na movimentação do jogador de 1 segundo.
125É possível alterar esse valor de 1 segundo apssando no fix_step (ms).
126
127_________________________________________________________
128
129*Clear()
130
131Limpa a tela de dialogo atual.
132
133_________________________________________________________
134
135*Name(<npc_name>)
136
137Altera o nome do NPC atual na tela de dialogo.
138_________________________________________________________
139
140*Show(<ptbr>, // Texto em PTBR
141 ---- Parâmetros Opcionais ---
142 {spanish}, // Texto em Espanhol
143 {english}) // Texto em Inglês
144
145Adiciona um texto.
146
147Dentro de diálogos é possível setar uma cor colocando <CORHEXADECIMAL> antes do texto.
148
149Exemplo: Show("Hello <FF52434E>World<DEFAULT>!");
150
151Há algumas cores predefinidas para maior agilidade e para seguir melhor a paleta de cores do cliente.
152Tente sempre utilizar umas delas quando possível.
153_________________________________________________________
154
155*AddOption(<button_id>, // Id do Botão
156 <text>, // Texto
157 ---- Parâmetros Opcionais ---
158 <color>, // Cor do texto
159 <extra_num>, // Valor extra numérico
160 <extra_str> ); // Valor extra string
161
162Este comando pede ao cliente que crie uma opção para o jogador escolher.
163
164Quando o jogador clicar na opção, o valor do <button_id> irá continuar
165a execução do script após o comando WaitOption() e o id da opção
166escolhida pode ser retornado com o parametro OPTION.
167
168<extra_num> adiciona a variavel .@option_num[<button_id>] o valor fornecido.
169<extra_str> adiciona a variavel .@option_str$[<button_id>] o valor fornecido.
170
171Exemplo de Uso:
172 AddOption(1, ML("Poção Vermelha", "Pocion Vermelha", "Red Potion"), "D", 501, "Red" );
173 AddOption(2, ML("Poção Azul", "Pocion Azul", "Blue Potion"), "D", 502, "Blue" );
174 WaitOption(); // Vamos supor que o jogador clicou na opção 2.
175 getitem(.@option_num[OPTION], 1);
176 Show(".@option_str$ is " + .@option_str$[OPTION]);
177
178_________________________________________________________
179
180*WaitOption()
181
182Este comando pede para que o cliente mostre na tela os botões
183armazenados com o AddOption.
184
185Após o jogador escolher uma opção, a execução do script continua.
186--------------------------------------------------------------------
187 >>>> Achievement <<<<
188
189 Manipulação de conquistas do jogador.
190
191 Atualmente as conquistas estão HARDCODED no emulador, não estamos utilizando o sistema de
192conquistas padrão do rAthena pois o mesmo é muito pesado e desnecessário.
193
194 Futuramente a ideia é fazer o mesmo dinâmico, mas até lá, paciência invocadores.
195-------------------------------F-------------------------------------
196
197*UpdateAchiev(<char_id>, // Id do Personagem
198 <achievement_id>, // Id da Conquista
199 <val_const>, // Constante do Indice do Valor a ser alterado
200 <value>); // Valor
201
202Atualiza o valor de uma conquista do jogador com base na constante e id passado.
203O emulador já faz a lógica para verificar se a conquista vai ser completada (hardoced).
204
205Retorna 1 caso a conquista tenha sido completada.
206Retorna 0 caso a conquista não tenha sido completada ou já estava completada.
207Retorna -1 caso o id da conquista seja inválido.
208
209- val_const:
210 ACHIEV_ARG1 - Altera o value1 da conquista.
211 ACHIEV_ARG2 - Altera o value2 da conquista.
212
213Exemplo de Uso:
214 UpdateAchiev(getcharid(0), 2, ACHIEV_ARG1, 10); // Atualiza para 10 o valor 1 da consquita 2
215
216_________________________________________________________
217
218*GetAchievValue(<char_id>, // Id do Personagem
219 <achievement_id>, // Id da Conquista
220 <val_const>) // Constante do Indice do Valor a ser alterado
221
222Pega o valor de uma conquista do jogador com base na constante e id passado.
223Caso seja passado um const inválido de valor, o script é cancelado e um alerta é enviado ao console.
224
225- val_const:
226 ACHIEV_ARG1 - Retorna o value1 da conquista.
227 ACHIEV_ARG2 - Retorna o value2 da conquista.
228
229Exemplo de Uso:
230 .@val1 = GetAchievValue(getcharid(0), 3, ACHIEV_ARG2); // Pega o valor 2 da conquista 3.
231 .@val1 += 10; // Adiciona mais 10 ao valor.
232 UpdateAchiev(getcharid(0), 3, ACHIEV_ARG2, .@val1); // Atualiza para o novo valor o valor 2 da qoncuista 3.
233
234_________________________________________________________
235
236*CompleteAchiev(<char_id>, // Id do Personagem
237 <achievement_id>) // Id da Conquista
238
239Completa uma conquista.
240Caso seja passado um id de conquista inválido, o script é cancelado e um alerta é enviado ao console.
241
242Exemplo de Uso:
243 CompleteAchiev(getcharid(0), 0);
244
245Note que não precisa se importar se a conquista já está completada ou não, o emulador já
246cuida disso.
247
248_________________________________________________________
249
250*IsAchievCompleted(<char_id>, // Id do Personagem
251 <achievement_id>) // Id da Conquista
252
253Retorna 1 se a conquista estiver completada ou 0 caso contrário.
254É útil para fazer conquistas que precisam de outras conquistas para ser liberada, uma espécie de corrente.
255
256Exemplo de Uso:
257 .@isCompleted_1 = IsAchievCompleted(getcharid(0), 1);
258 .@isCompleted_2 = IsAchievCompleted(getcharid(0), 2);
259
260 if(.@isCompleted_1 && .@isCompleted_2) {
261 CompleteAchiev(getcharid(0), 3); // Completa conquista 3 por ter a conquista 1 e 2 completada
262 }
263
264_________________________________________________________
265
266*AskInput(<variable>,
267 ---- Parâmetros Opcionais ---
268 <min>, <max>);
269
270Espelho da função input do emulador, só que para o hook.
271
272--------------------------------------------------------------------
273 >>>> Player <<<<
274--------------------------------------------------------------------
275
276*IsPcDead(<char_id>);
277
278Retorna 1 caso o jogador esteja morto ou não exista.
279
280_________________________________________________________
281
282*IsFriend(<char_id_a>, <char_id_b>);
283
284Retorna 1 caso o jogador A seja amigo do jogador B.
285
286--------------------------------------------------------------------
287 >>>> NPC <<<<
288
289 Comandos que mexem com NPCs
290--------------------------------------------------------------------
291
292*ViewCondition(<npc_name>,
293 <variable_name>,
294 <compare_method>,
295 <value1>,
296 ---- Parâmetros Opcionais ---
297 <value2>,
298 <refresh>
299 );
300
301Aplica uma condição para visualizar o NPC utilizando
302variaveis de personagem.
303
304Se uma condição for falsa, já não é possível visualizar o NPC.
305Quando o parametro <refresh> for 1, o NPC irá atualizar sua visão para jogadores proximo dele.
306
307Compare Methods:
308 EVC_LESS -> Valida se a variavel é menor que value1.
309 EVC_EQUALS -> Valida se a variavel é igual ao value1.
310 EVC_MORE -> Valida se a variavel é maior que value1.
311 EVC_BETWEEN -> Valida se a variavel está entre value1 e value2.
312 EVC_DIFFERENT -> Valida se a variavel é diferente de value1.
313
314Exemplo de Uso:
315 Begin("ViewCondition",
316 "Você pode me ver por que @test is less than one!", "", "");
317 Skip();
318 Show("Agora, irei colocar a variavel @test para 1!");
319 CloseDialog();
320 @test = 2;
321 end();
322
323OnInit:
324 ViewCondition(strnpcinfo(0), "@test", EVC_LESS, 1);
325 end();
326
327_________________________________________________________
328
329*CloneNpc(<npc_origin_name>,
330 <npc_clone_visible_name>,
331 <npc_clone_hidden_name>,
332 <map>,
333 <x>,
334 <y>
335 <dir>
336 <sprite>,
337 ---- Parâmetros Opcionais ---
338 <x_touch>,
339 <y_touch>,
340 <owner_id>,
341 <channel_id>);
342
343Cria a duplicata de um NPC.
344Retorna o GID do Clone criado.
345_________________________________________________________
346
347*RemoveNpc(<npc_id ou npc_name>);
348
349Remove um NPC do map-serv.
350
351_________________________________________________________
352
353*GetOwner(<npc_id>);
354
355Este comando retorna o valor <owner> atual do NPC.
356Retorna -1 quando o NPC nem ao menos existe.
357
358--------------------------------------------------------------------
359 >>>> Hook <<<<
360
361 Comandos que interferem com o jogo através da Hemera
362--------------------------------------------------------------------
363
364*BlockCamera(<type>)
365
366Bloqueia movimentação da camera a partir do tipo passado.
367É importante ressaltar que quando o jogador é teleportado, a camera
368é liberada para evitar bugs de teleporte enquanto dialogando com npc e etc...
369
370Types
371 CAM_ZOOM // Impede o jogador de mudar o zoom do jogo
372 CAM_ROTATION // Impede o jogador de rotacionar a camera
373 CAM_ANGLE, // Impede o jogador de movimentar o angulo da camera
374 CAM_ANCHOR_X, // Impede o cliente de movimentar a ancoragem x da camera
375 CAM_ANCHOR_Y, // Impede o cliente de movimentar a ancoragem y da camera
376 CAM_ANCHOR_XY, // Impede o cliente de movimentar a ancoragem x e y da camera
377 CAM_ALL // Impede todas as de cima
378
379Exemplo de Uso:
380 BlockCamera(CAM_ANGLE);
381
382_________________________________________________________
383
384*FreeCamera(<type>)
385
386Desbloqueia a movimentação da camera a partir do tipo passado.
387Esta função já é chamada quando um jogador troca de mapa.
388
389Exemplo de Uso:
390 FreeCamera(CAM_ANGLE);
391
392_________________________________________________________
393
394*SetCamera(<type>,
395 <value>,
396 ---- Parâmetros Opcionais ---
397 <block/free>
398 );
399
400Modifica a camera de acordo com o tipo passado.
401Quando o parametro <block/free> é passado (1 = block, 0 = free),
402o comando também irá bloquear ou desbloquear a camera, evitando
403desta forma ter que chamar o BlockCamera caso o script brinque
404com a movimentação da camera.
405
406Lembre-se que a ancoragem X e Y devem sempre ser bloqueadas para
407serem modificadas, então esse comando ao receber CAM_ANCHOR_X,
408CAM_ANCHOR_Y ou CAM_ANCHOR_XY, já bloqueia eles por padrão,
409então não se esqueça de chamar FreeCamera(CAM_ANCHOR_XY) após
410terminar o script!
411
412Dica:
413 Dentro do jogo, em modo dev, é possível utilizar o comando /caminfo para pegar informação
414 atual da camera.
415
416Exemplo de Uso:
417 SetCamera(CAM_ROTATION, 180); // Rotaciona a camera no angulo de 180 graus.
418_________________________________________________________
419
420*CutsceneMode(<state>)
421
422Coloca o jogador em modo de cutscene quando <state> = 1 e remove quando 0.
423
424Um jogador em modo de cutscene não pode andar ou interagir com npcs.
425Será enviado também um packet para que Hemera aplique um efeito "widescreen" e
426que esconda todos os elementos da tela (com exceção é claro da tela de dialogo de npc).
427
428Exemplo de Uso:
429 CutsceneMode(1);
430
431_________________________________________________________
432
433*SystemMessage(<char_id>,
434 <key>
435 ---- Parâmetros Opcionais ---
436 <color>);
437
438Adiciona uma mensagem de sistema.
439Mensagens de sistema são mensagens que estão dentro do cliente que já
440possuem suporte multilinguagem.
441
442Exemplo:
443 SystemMessage(.@char_id, "SystemMessage_HouseError1", "#FFFFFF");
444
445_________________________________________________________
446
447*DisplayChat(<char_id>,
448 <message>
449 ---- Parâmetros Opcionais ---
450 <color>);
451
452Mostra uma mensagem no chat do jogador.
453
454Exemplo:
455 DisplayChat(CID, "Olá", "#FFFFFF");
456
457_________________________________________________________
458
459*SetNpcExtraValueNum(<npc_id>, <index>, <value>);
460*SetNpcExtraValueStr(<npc_id, <index>, <value>);
461
462Seta um valor númerico/texto extra para o NPC.
463
464Indice máximo é 10.
465
466_________________________________________________________
467
468*GetNpcExtraValueNum(<npc_id>, <index>);
469*GetNpcExtraValueStr(<npc_id>, <index>);
470
471Pega um valor númerico extra para o Npc
472
473Indice máximo é 10.
474
475_________________________________________________________
476
477*Shade(<char_id>, <shade>, <on_off>);
478
479Pede pro cliente aplicar um shade.
480
481_________________________________________________________
482
483*Ost(<char_id>, <mp3>, <loop>);
484
485Toca uma ost.
486
487Quando loop é 1, a música irá conitnuar tocando enquanto ele não
488trocar de mapa.
489
490Se <mp3> for "MAP", toca a música do mapa atual.
491
492--------------------------------------------------------------------
493 >>>> Item <<<<
494
495--------------------------------------------------------------------
496
497*RestoreItemsDurability(<char_id>);
498
499Restaura a durabilidade de todos os itens do jogador.
500
501_________________________________________________________
502
503*GetWhoDrops(<mobvar>, <chancevar>, <item_id>);
504
505Pega os monstros que dropam o item (mobvar) juntamente com
506a chance de drop de cada um (chancevar).
507
508O comando também retorna a quantidade do resultado da busca.
509
510Exemplo:
511 .@qty = GetWhoDrops(.@monsters[0], .@chance[0], itemrequired);
512
513 for(.@i = 0; .@i < .@qty; .@i++)
514 {
515 SystemMessage(getcharid(0), "Monstro - " + .@monsters[.@i]));
516 SystemMessage(getcharid(0), "Chance - " + .@chance[.@i]));
517 }
518
519--------------------------------------------------------------------
520 >>>> Mapa <<<<
521
522
523--------------------------------------------------------------------
524
525*MapChannel(<map_name>, <channel_max>);
526
527Este comando altera o número máximo de canais de um mapa.
528
529_________________________________________________________
530
531*GetBlChannel(<gid or cid>);
532
533Este comando retorna o canal atual do objeto.
534Se o objeto não existir, retorna -1.
535
536--------------------------------------------------------------------
537 >>>> Bestiário <<<<
538
539--------------------------------------------------------------------
540
541*SendBestiaryMonsterInfo(<char_id>, <mob_id>);
542
543Envia as informações do monstro para o jogador (abre o bestiário caso esteja fechado).
544
545_________________________________________________________
546
547*SendBestiaryItemInfo(<char_id>, <item_id>, <chance>);
548
549Envia para o cliente para adicionar a informação do item e sua chance de drop na tela do bestiário.
550
551--------------------------------------------------------------------
552 >>>> Casa <<<<
553
554 Estrutura do Banco de Dados
555
556 house_player -> Tabela que possui informações base da casa do jogador.
557 char_id - Id do Personagem
558 status - [0: Guardada]
559 [1: Montada ]
560 skin - Sprite do NPC da Casa
561 locktype - [0: Aberto para todos]
562 [1: Trancado para todos]
563 [2: Liberado somente para amigos]
564 [3: Por senha]
565 password - Senha quando locktype é 3
566 map - Mapa onde está montado
567 channelid - ID do Canal para ser posto (quando disponível)
568 x - Coordenada x de onde está montado
569 y - Coordenada y de onde está montado
570 instanceid - ID da Instância onde o mapa está
571 npcid - ID do NPC que gerou a tenda.
572
573 house_data -> Tabela que possui informações das mobilias do jogador.
574 id - ID (AI)
575 cid - Id da Conta
576 category - Categoria da Mobilia
577 status - [0: Desativado]
578 [1: Ativada]
579 x - X de onde a mobilia está na casa
580 y - Y de onde a mobilia está na casa
581 dir - Direção
582 dir_type - Se é a sprite_1 ou sprite_2 que será mostrada devido a um bug docliente.
583 scrpt - Valor extra para alguma função
584
585--------------------------------------------------------------------
586
587*RemoveHouse(<char_id>, <hard_mode>); // Script function BASIC_CAMP.txt
588
589Remove uma casa do jogador.
590Quando <hard_mode> for 1, significa que no banco de dados
591devemos atualizar o campo `status` para um, pois é o jogador quem está solicitando
592a remoção da tenda.
593
594OBS: O @reloadscript também remove todas as casas dos jogadores como hard mode para
595evitar possíveis bugs ou exploits.
596
597_________________________________________________________
598
599*InitHouseSystem(); // Script function BASIC_CAMP.txt
600
601Inicia o sistema de casas, colocando todas as casas dos jogadores como `status` = 0.
602Se o jogador estiver conectado, ele recebe a mensagem de remoção da sua casa.
603Essa função já é chamada no OnInit, não é necessário a utilizar em outro lugar.
604
605_________________________________________________________
606
607*LockHouse(<char_id>, // Script function BASIC_CAMP.txt
608 <locktype>,
609 ---- Parâmetros Situcionais ---
610 <senha>);
611
612Altera o tipo de tranca da tenda do jogador.
613O parâmetro senha é obrigatório quando locktype for HOUSE_LOCK_PASSWORD.
614
615Valores permitidos no locktype:
616 HOUSE_LOCK_ALL - Tranca a casa para todos, exceto o próprio dono.
617 HOUSE_LOCK_NONE - Destranca a casa, qualquer um pode entrar nela.
618 HOUSE_LOCK_PASSWORD - Tranca a casa com senha.
619 HOUSE_LOCK_FRIENDSALLOW - Apenas amigos são permitidos de entrar.
620
621_________________________________________________________
622
623*GetPlayerHouseInfo(<char_id>, // Script function BASIC_CAMP.txt
624 <info>,
625 ---- Parâmetros Situcionais ---
626 <arg>);
627
628Obtém uma informação espécifica da casa (<info>).
629
630Os valores aceitos de <info> são:
631 [HOUSE_INFO_MAPOUT]
632 Retorna uma string no seguinte formato: "mapa|x|y"
633 Isto é onde a casa do jogador está posta, é utilizado para por exemplo o Portal
634 da tenda saber onde teleportar o jogador.
635
636 [HOUSE_INFO_STATUS]
637 Retorna 1 se a casa do jogador estiver colocada ou 0 caso o contrário.
638
639 [HOUSE_INFO_OWNER]
640 Retorna o id do personagem que é dono da casa.
641 O parâmetro <arg> deve conter o ID do NPC da tenda!
642
643 [HOUSE_INFO_LOCK]
644 Retorna o tipo de tranca da casa.
645 O parâmetro <arg> deve conter o ID do NPC da tenda!
646 Se o tipo da tranca for igual a [HOUSE_LOCK_PASSWORD], é retornado a senha + 100.
647 É só subtrair o valor 100 para pegar a senha do jogador na função.
648
649_________________________________________________________
650
651*MountHouse(<char_id>, <map>, <x>, <y>); // Script function BASIC_CAMP.txt
652
653Cria uma tenda e carrega os npcs dentro dela
654É chamado quando um jogador loga (e tem sua casa posta) ou quando usa a habilidade.
655Está aqui apenas como uma referência.
656
657_________________________________________________________
658
659*GetMobinfo(<mob_id>, <info>);
660
661Obtém uma informação da mobilia (mobilias_rozero.yml)
662
663A variavel <info> pode ser:
664 MOBILIA_INFO_CATEGORY,
665 MOBILIA_INFO_NPC, // retorna string
666 MOBILIA_INFO_SPRITE_NORMAL,
667 MOBILIA_INFO_SPRITE_INVERT,
668 MOBILIA_INFO_MATERIALS,
669 MOBILIA_INFO_CASH
670
671_________________________________________________________
672
673*WarpHouse(<owner_char_id>, <npc_id>, <in or out>, <warping_aid>);
674
675Teleporta o <warping_aid> para a casa do <owner_char_id>.
676
677Pode-se usar HOUSE_YES ou HOUSE_NO para dizer se está saindo ou entrando na casa.
678
679_________________________________________________________
680
681*EnableHouseHud(<char_id>,
682 <total_mobilias>,
683 <total_servos>,
684 <total_paredes>,
685 <total_andares>);
686
687Pede a hemera que mostre a interface de casa.
688
689_________________________________________________________
690
691*DisableHouseHud(<char_id>);
692
693Pede a Hemera que remova a interface de casa da tela.
694
695_________________________________________________________
696
697*SendDisabledFurniture(<char_id>,
698 <id>,
699 <mobilia_id>,
700 <draw>);
701
702Adiciona uma mobilia na tela de mobilias desativadas do jogador.
703
704_________________________________________________________
705
706*DrawDisabledFurnitures(<char_id>);
707
708Pede que Hemera redesenhe as mobilias desativadas.
709
710_________________________________________________________
711
712*IsHouseEditMode(<char_id>);
713
714Retorna 1 quando o jogador está no modo de edição.
715
716_________________________________________________________
717
718*SetEditFurniture(<char_id>, <npc_id>);
719
720Seta o npc que o jogador está editando.
721
722_________________________________________________________
723
724*GetHouseCrafting(<char_id>)
725
726Pega o id da mobília sendo construida no momento.
727
728_________________________________________________________
729
730*AddFurniture(<char_id>, // Script
731 <mob_id>,
732 <map_name>,
733 <x>,
734 <y>,
735 <dir>,
736 <dir_type>,
737 <script>,
738 <isNew>,
739 <id>);
740
741Adiciona uma mobilia nova na tenda.
742Se isNew for 1, insere também no banco de dados.