-
Isbjørn.
User deleted
gli npc sono creati con un particolare linguaggio di script chiamato LUA,
il lua è usato in moltissimi giochi,anche se i comandi sono quasi sempre diversi
vanno scritti in un documento di testo,consiglio blocco note
come linguaggio selezionate lua
RICORDO CHE GLI SPAZI SONO IMPORTANTISSIMI!
COME FACCIO A FAR DIRE QUALCOSA A UN NPC?
ci sono tre modi per far parlare in tre modi diversi
se si vuole far dire a un npc qualcosa normalmente si scriveCODICEsay ( "testo" )
a questo punto il nostro npc dirà semplicemente "testo"
è abbastanza intuitivo visto che "say" in inglese vuol dire "dire"
se si vuole far dire un titolo usiamoCODICEsay_title ( "titolo" )
il titolo viene visualizzato in giallo
se invece è un avviso si scriveCODICEsay_reward ( "avviso" )
e verrà visualizzato in rosa
facciamo l'esempio di un npc che vende itemCODICEsay_title ( "venditore" )
say ( "sono un venditore sai?" )
say ( "posso venderti degli item" )
say ( "vuoi?" )
say_reward ( "ricordati che costa yang!" )
continuando con l'npc che vende item ora vediamo come...
CREARE DELLE OPZIONI
è molto sempliceCODICElocal blabla = select ( "pelle di zampa d'orso" , "artiglio di lupo" , "dente di cinghiale" , "chiudi" )
a questo punto "blabla" è diventata la variabile della selezione!
le variabili vi serviranno molto in npc più complicati con opzioni l'una dentro l'altra!
ma adesso come facciamo a specificare cosa avviene quando viene cliccata un opzione?
GLI IF & ELSEIF
è molto intuitivo,"if",si sa,in ingleve vuol dire "se"
e allora scriviamoCODICEif blabla == 1 then
sotto vanno messi i comandi che dopo vedremo
molto facile da interpretare, in italiano sarebbe
se blabla == 1 allora
praticamente: SE l'opzione è uguale a 1 allora
[comandi]
ricordiamo che blala è la nostra variabile,se noi avessimo messo "local vloaid" allora
adesso metteremmo "if vloaid"
per la seconda opzione non dobbiamo più mettere if ma elseif,else in inglese vuol
dire altrimentiCODICEelseif blabla== 2 then
altrimenti se blabla è uguale a 2 allora
siamo arrivati qua
codice:
say_title ( "venditore" )
say ( "sono un venditore sai?" )
say ( "posso venderti degli item" )
say ( "vuoi?" )
say_reward ( "ricordati che costa yang!" )
local blabla = select ( "pelle di zampa d'orso" , "artiglio di lupo" , "dente di cinghiale" , "chiudi" )
if blabla == 1 then
adesso vediamo i fatidici COMANDI
I COMANDI
/!\ QUANDO FINISCE UNA SERIE DI COMANDI BISOGNA SEMPRE METTERE
return
end
ci sono diversi tipi di comandi da mettere sotto agli if,nel caso del venditoreCODICEpc . give_item2 ( "value" , quantità )
questo comando da l'item "value" nella
"quantità" scelta
però gli item non li vogliamo dare gratis
per far pagare mettiamo questo comandoCODICEif pc . gold >= 10 then
pc . changegold ( - 10 )
se i soldi sono maggiori (>) di 10 allora
cambia i soldi in meno (-) 10
naturalmente 10 è un esempio,voi mettete il vostro prezzo
siamo arrivati quiCODICEsay_title ( "venditore" )
say ( "sono un venditore sai?" )
say ( "posso venderti degli item" )
say ( "vuoi?" )
say_reward ( "ricordati che costa yang!" )
local blabla = select ( "pelle di zampa d'orso" , "artiglio di lupo" , "dente di cinghiale" , "chiudi" )
if blabla == 1 then
if pc . gold >= 10 then
pc . changegold ( - 10 )
pc . give_item2 ( "30053" , 1 )
ma se chi clicca l'npc non ha abbastanza soldi? c'è il nostro amico elseCODICEelse
say ( "Non hai abbastanza yang!" )
say_title ( "venditore" )
say ( "sono un venditore sai?" )
say ( "posso venderti degli item" )
say ( "vuoi?" )
say_reward ( "ricordati che costa yang!" )
local blabla = select ( "pelle di zampa d'orso" , "artiglio di lupo" , "dente di cinghiale" , "chiudi" )
if blabla == 1 then
if pc . gold >= 10 then
pc . changegold ( - 10 )
pc . give_item2 ( "30053" , 1 )
else
say ( "Non hai abbastanza yang!" )
return
end
ho messo return end perchè è finita una serie di comandi!
naturalmente possiamo continuare a fare le opzioni con elseifCODICEsay_title ( "venditore" )
say ( "sono un venditore sai?" )
say ( "posso venderti degli item" )
say ( "vuoi?" )
say_reward ( "ricordati che costa yang!" )
local blabla = select ( "pelle di zampa d'orso" , "artiglio di lupo" , "dente di cinghiale" , "chiudi" )
if blabla == 1 then
if pc . gold >= 10 then
pc . changegold ( - 10 )
pc . give_item2 ( "30053" , 1 )
else
say ( "Non hai abbastanza yang!" )
elseif blabla == 2 then
if pc . gold >= 10 then
pc . changegold ( - 10 )
pc . give_item2 ( "30028" , 1 )
else
say ( "Non hai abbastanza yang!" )
elseif blabla == 3 then
if pc . gold >= 10 then
pc . changegold ( - 10 )
pc . give_item2 ( "30004" , 1 )
else
say ( "Non hai abbastanza yang!" )
return
end
per il "chiudi":non specificatelo nemmeno,se non è specificato quando lo si clicca si termina automaticamente lo script...
CREARE UN INPUT CON VARIABILE
un input è un riquadro di testo,in cui inserire un informazione che servirà
per i comandi seguenti
codice:
local lala = input ( )
questo è il comando,lala è come sopra blabla
automaticamente lala diventa la variabile di quello che c'è scritto dentro,se
noi la dentro scriviamo ciao
lala = ciao
e adesso come facciamo a utilizzarla?
mettiamo che è un npc per gm e serve a settare le skill a p di qualcuno
codice:
local nome_pg = input ( )
command("setskillother " .. nome_pg .. " 4 59")
IMPORTANTISSIMI GLI SPAZI
"[spazio]..[spazio]nome_pg[spazio]..[spazio]"
questo setterà a p aura del pg di cui hai inserito il nome
ma..avete notato command?
command serve a far fare un comando gm a un npc,naturalmente funzionerà solo
se il pg è gm
i comandi sono veramente tantissimi,consiglio di guardare gli npc da scaricare
per scoprirne e utilizzarne di nuovi!
COME AGGIUNGERE l'NPC CHE ABBIAMO APPENA CREATO
create una cartella e chiamatela con il value che volete dare all'npc IL VALUE DEVE ESSERE QUELLO DI UN NPC GIA ESISTENTE MA VUOTO es 20092
dentro createci una cartella e chiamatela "chat" (senza virgolette "")
e salvateci dentro il documento di testo come
change_empire.start.0.script
poi create un altro documento di testo e chiamatelo
change empire.start.0.arg
e dentro ci mettiamo
codice:
"Testo che volete venga visualizzato sull'opzione per entrare nell'npc"
es: vuoi viaggiare?
attenzione a mettere le virgolette ""
creiamone un altro e chiamiamolo
change_empire.start.0.when
quasi sempre va lasciato vuoto,ma se vogliamo far si
che questo npc lo possano usare solo i gm scriviamo dentro
codice:
return pc . is_gm ( )
mettete sopra l'arg in mezzo lo script e sotto il when,dopodichè mettete la cartella nell'ftp questo percorso
/usr/game(o rain)/channel/share_data/locale/hongkong(o english o newcibn)/quest/object
riavviate il server oppure in game date il comando
codice:
/reload q
spawnate il vostro npc con il comando
codice:
/m numero del nome della cartella
se avete sbagliato non vi manderà in loop niente,semplicemente l'npc non funzionerà
un po di comandi
if pc . gold >= 100 then
pc . changegold ( - 100 ) toglie 100 yang
if pc . gold >= 100 then
pc . changegold ( + 100 ) aggiunge 100 yang
elseif pc . countitem ( "value" ) < quantità then
say ( "Mi dispiace, ma non hai abbastanza item." )
elseif pc . countitem ( "value" ) >= quantità then
pc . removeitem ( "value" , quantità ) toglie item "value" nella quantià "quantità"
pc.polymorph (value,tempo) trasforma il pg nel value del mostro per il tempo inserito (in secondi)
if pc.is_polymorphed () then se il pg è trasformato
notice_all ("Messaggio") Da una notizia a tutti (tipo il comando /n )
horse.advance ( ) fa salire il cavallo di un livello
horse.is_dead fa morire il cavallo
horse.is_riding () Credo serva per cavalcare il cavallo senza averlo come i buoni equitazione
horse.revive () Fa risorgere il cavallo morto
horse.ride () Serve a far salire il pg che clicca l'npc
horse.set_level () Setta il livello del cavallo del pg che clicca l'npc
horse.summon () Evoca il cavallo
horse.unride () Fa scendere il pg dal cavallo
horse.unsummon () Congeda il cavallo
horse.feed () da da mangiare al cavallo
change_sex () cambia sesso del personaggio
e ora una lunga lista di comandi di cui non conosco l'utilità presi da una vecchia guidaSPOILER (click to view)CODICE__give_char_priv ()
addImage ()
addmapsignal ()
affect.add ()
affect.remove ()
affect.remove_bad ()
affect.remove_good ()
bool_to_str ()
building.get_land_id ()
building.get_land_info ()
building.has_land ()
building.set_land_owner ()
char_log ()
Chat ()
clear_server_timer ()
clearmapsignal ()
clear timer ()
cmdchat ()
color ()
complete_quest ()
complete_quest_state ()
confirm ()
sys_log ()
d.check_eliminated ()
d.clear_regen ()
d.count_monster ()
d.exit ()
d.exit_all ()
d.exit_all_to_start_position ()
d.get_kill_mob_count ()
d.get_kill_stone_count ()
d.get_map_index ()
d.getf ()
d.is_unique_dead ()
d.is_use_potion ()
d.join ()
d.jump_all ()
d.jump_all_local ()
d.kill_unique ()
d.new_jump ()
d.new_jump_all ()
d.purge ()
d.purge_unique ()
d.regen_file ()
d.revived ()
d.select ()
d.set_dest ()
d.set_exit_all_at_eliminate ()
d.set_regen_file ()
d.set_unique ()
d.set_warp_at_eliminate ()
d.setf ()
d.spawn ()
d.spawn_goto_mob ()
d.spawn_group ()
d.spawn_mob ()
d.spawn_move_group ()
d.spawn_move_unique ()
d.spawn_name_mob ()
d.spawn_stone_door ()
d.spawn_unique ()
d.spawn_wooden_door ()
d.unique_get_hp_perc ()
d.unique_set_def_grade ()
d.unique_set_hp ()
d.unique_set_maxhp ()
delay ()
find_npc_by_vnum ()
find_pc_by_name ()
find_pc_cond ()
game.drop_item ()
game.get_event_flag ()
game.get_guild_name ()
game.get_safebox_level ()
game.get_warp_guild_war_list ()
game.open_mall ()
game.open_safebox ()
game.request_make_guild ()
game.set_event_flag ()
game.set_safebox_level ()
get_global_time ()
get_locale ()
get_server_timer_arg ()
get_time ()
guild.around_ranking_string ()
guild.get_any_war ()
guild.get_ladder_point ()
guild.get_name ()
guild.get_rank ()
guild.get_reserve_war_table ()
guild.get_warp_war_list ()
guild.high_ranking_string ()
guild.is_bet ()
guild.is_war ()
guild.level ()
guild.name ()
guild.war_bet ()
guild.war_enter ()
highscore.register ()
highscore.show ()
horse.advance ()
horse.feed ()
horse.get_grade ()
horse.get_health ()
horse.get_health_pct ()
horse.get_hp ()
horse.get_level ()
horse.get_stamina ()
horse.get_stamina_pct ()
horse.is_dead ()
horse.is_mine
horse.is_riding ()
horse.revive ()
horse.ride ()
horse.set_level ()
horse.summon ()
horse.unride ()
horse.unsummon ()
input ()
is_test_server ()
item.get_count ()
item.get_level ()
item.get_name ()
item.get_refine_vnum ()
item.get_size ()
item.get_socket ()
item.get_sub_type ()
item.get_type ()
item.get_value ()
item.get_vnum ()
item.has_flag ()
item.next_refine_vnum ()
item.remove ()
item.set_socket ()
item_name ()
loop_timer ()
makequestbutton ()
marriage.divorce_time_check ()
marriage.end_wedding ()
marriage.engage_to ()
marriage.find_married_vid ()
marriage.get_married_time ()
marriage.get_wedding_list ()
marriage.join_wedding ()
marriage.marry_to ()
marriage.remove ()
marriage.set_to_marriage ()
marriage.warp_to_my_marriage_map ()
marriage.wedding_dark ()
marriage.wedding_snow ()
marriage.wedding_music ()
marriage.wedding_is_playing_music ()
Math.floor ()
Math.max ()
math.mod ()
Math.random ()
member.chat ()
member.clear_ready ()
member.set_ready ()
mob.spawn ()
mob.spawn_group ()
mob_name ()
mob_vnum ()
next_time_is_now ()
next_time_set ()
notice ()
npc.dec_remain_hairdye_count ()
npc.dec_remain_skill_book_count ()
npc.get_empire ()
npc.get_race ()
npc.get_remain_hairdye_count ()
npc.get_remain_skill_book_count ()
npc.getrace ()
npc.is_near ()
npc.is_near_vid ()
npc.is_pc ()
npc.is_quest ()
npc.kill ()
npc.lock ()
npc.open_shop ()
npc.purge ()
npc.unlock ()
npc_get_job ()
npc_is_same_empire ()
npc_is_same_job ()
number ()
party.chat ()
party.clear_ready ()
party.get_max_level ()
party.get_near_count ()
party.getf ()
party.is_leader ()
party.is_party ()
party.run_cinematic ()
party.setf ()
party.setqf ()
party.show_cinematic ()
party.syschat ()
pc.aggregate_monster ()
pc.change_alignment ()
pc.change_gold ()
pc.change_money ()
pc.change_sp ()
pc.changealignment ()
pc.changegold ()
pc.changemoney ()
pc.clear_skill ()
pc.clear_sub_skill ()
pc.clear_one_skill ()
pc.count_item ()
pc.countitem ()
pc.delqf ()
pc.destroy_guild ()
pc.enough_inventory ()
pc.forget_my_attacker ()
pc.get_armor ()
pc.get_empire ()
pc.get_equip_refine_level ()
pc.get_exp ()
pc.get_gold ()
pc.get_horse_level ()
pc.get_hp ()
pc.get_job ()
pc.get_leadership ()
pc.get_level ()
pc.get_local_x ()
pc.get_local_y ()
pc.get_map_index ()
pc.get_max_hp ()
pc.get_max_sp ()
pc.get_name ()
pc.get_next_exp ()
pc.get_part ()
pc.get_playtime ()
pc.get_sex ()
pc.get_skill_level ()
pc.get_sp ()
pc.get_start_location ()
pc.get_vid ()
pc.get_war_map ()
pc.get_weapon ()
pc.get_x ()
pc.get_y ()
pc.getarmor ()
pc.getcurrentmapindex ()
pc.getempire ()
pc.getf ()
pc.getgold ()
pc.getguild ()
pc.gethp ()
pc.getleadership ()
pc.getmaxhp ()
pc.getmaxsp ()
pc.getmoney ()
pc.getname ()
pc.getplaytime ()
pc.getqf ()
pc.get_skill_group ()
pc.getsp ()
pc.getweapon ()
pc.getx ()
pc.gety ()
pc.give_exp ()
pc.give_exp2 ()
pc.give_exp_perc ()
pc.give_gold ()
pc.give_item ()
pc.give_item2 ()
pc.give_item_from_special_item_group ()
pc.give_lotto ()
pc.has_guild ()
pc.has_master_skill ()
pc.hasguild ()
pc.have_map_scroll ()
pc.have_pos_scroll ()
pc.in_dungeon ()
pc.is_guild_master ()
pc.is_horse_alive ()
pc.is_married ()
pc.is_mount ()
pc.is_polymorphed ()
pc.isguildmaster ()
pc.mount ()
pc.pc_attract_ranger ()
pc.polymorph ()
pc.refine_equip ()
pc.remove_from_guild ()
pc.remove_item ()
pc.remove_polymorph ()
pc.removeitem ()
pc.reset_point ()
pc.revive_horse ()
pc.select ()
pc.set_part ()
pc.set_warp_location ()
pc.set_warp_location_local ()
pc.setf ()
pc.setqf ()
pc.set_skill_group ()
pc.set_skill_level ()
pc.unmount ()
pc.warp ()
pc.warp_exit ()
pc.warp_local ()
pc.warp_to_guild_war_observer_position ()
pc.is_clear_skill_group ()
pc_find_skill_teacher_vid ()
pc_find_square_guard_vid ()
pc_get_exp_bonus ()
pc_get_village_map_index ()
pc_is_novice ()
q.done ()
q.getcurrentquestindex ()
q.no_send ()
q.set_clock ()
q.set_clock_name ()
q.set_clock_value ()
q.set_counter ()
q.set_counter_name ()
q.set_counter_value ()
q.set_icon ()
q.set_quest_state ()
q.set_state ()
q.set_title ()
q.set_title2 ()
q.setstate ()
q.start ()
q.yield ()
raw_script ()
restart_quest ()
say ()
say_npc_name ()
say_pc_name ()
say_reward ()
say_title ()
say_item ()
say_item_vnum ()
select ()
select_table ()
clear_letter ()
send_letter ()
send_letter_ex ()
server_loop_timer ()
server_timer ()
set_quest_state ()
set_state ()
setbgimage ()
setcolor ()
setleftimage ()
setmapcenterposition ()
setSkin ()
setstate ()
show_horse_menu ()
skill_group_dialog ()
syschat ()
table.insert ()
table.foreach ()
table.foreachi ()
table.getn ()
table_get_random_item ()
target.clear ()
target.delete ()
target.id ()
target.npc ()
target.pc ()
target.pos ()
target.vid ()
test_chat ()
time_hour_to_sec ()
time_min_to_sec ()
timer ()
tonumber ()
tostring ()
type ()
wait ()
pc.is_engaged ()
time_to_str ()
string.format ()
Math.ceil ()
pc.is_gm ()
pc.get_gm_level ()
pc.get_alignment ()
pc.get_real_alignment ()
pc.learn_grand_master_skill ()
pc.is_skill_book_no_delay ()
pc.remove_skill_book_no_delay ()
__get_empire_priv_string ()
__give_empire_priv ()
npc.get_guild ()
pc.mining ()
d.notice ()
pc.ore_refine ()
under_han ()
d.kill_all ()
d.setqf ()
__get_guild_priv_string ()
__give_guild_priv ()
__get_guildid_byname ()
item.get_id ()
item.select ()
select_item ()
item.select_cell ()
pc.diamond_refine ()
__fish_real_refine_rod ()
__refine_pick ()
item.get_cell ()
building.reconstruct ()
arena.start_duel ()
arena.get_duel_list ()
arena.add_observer ()
arena.is_in_arena ()
BuildSkillList ()
notice_all ()
warp_all_to_village ()
say_in_map ()
goldbar.quest ()
warp_all_in_map ()
regen_in_map ()
kill_all_in_map ()
notice_in_map ()
forked.decdeadcount ()
forked.cleardeadcount ()
forked.setdeadcount ()
forked.initkillcount ()
forked.inckillcount ()
forked.initmobkillcount ()
forked.incmobkillcount ()
forked.getmobkillcount ()
warp_all_except_my_empire_in_map ()
warp_all_my_empire_in_map ()
forked.initforked ()
warp_to_village ()
forked.getdeadcount ()
forked.incbosskillcount ()
forked.getbosskillcount ()
forked.getsungziposx ()
forked.getsungziposy ()
forked.getpassstartposx ()
forked.getpassstartposy ()
forked.getsungzimapindex ()
forked.getpassmapindex ()
forked.getpassmapindexbyempire ()
get_start_mapindex ()
get_start_pos_X ()
get_start_pos_Y ()
forked.getsungzipath ()
forked.getpasspath ()
forked.getpasspathbyempire ()
forked.isforkedmapindex ()
forked.issungzimapindex ()
warp_all_to_village_except_my_empire ()
is_allow_map ()
oh.candidacy_list ()
oh.election ()
oh.candidacy_name ()
oh.candidacy ()
oh.takemonarchmoney ()
pc.teleport ()
oh.isguildmaster ()
oh.candidacycount ()
affect.remove_hair ()
affect.add_hair ()
affect.add_collect ()
affect.add_collect_point ()
pc.get_premium_remain_sec ()
oh.ismonarch ()
oh.spawnmob ()
oh.monarchbless ()
oh.monarchpowerup ()
oh.monarchdefenseup ()
pc.send_block_mode ()
command ( "command gm)
oxevent.get_status ()
oxevent.open ()
oxevent.close ()
oxevent.quiz ()
oxevent.end_event ()
oxevent.get_attender ()
oxevent.give_item ()
oxevent.end_event_force ()
forked.getlevellimit ()
mgmt.monarch_state ()
mgmt.monarch_change_lord ()
oh.frog_to_empire_money ()
oh.spawnguard ()
oh.info ()
oh.transfer ()
oh.warp ()
pc.change_sex ()
pc.change_empire ()
pc.get_change_empire_count ()
get_quest_state ()
affect.remove_collect (). -
.:::The_Jocker:::..
User deleted
molto utile . -
.
questi npc che si creano non vanno poi implementati in mob_proto (navicat) ?e npc.txt (winscp)? .