Bom... Finalmente acabaram as provas e os trabalhos da faculdade e terei mais tempo para brincar no ToolSet e tentar programar um pouco do meu jogo.Como todo fa de MMORPG, eu estou querendo montar um PW (Persistent World). Como nao cheguei a programar muita coisa no NWN 1, terei que aprender tudo do zero agora no 2.Resolvi comecar com uma tipica fazenda, a Vila dos Tropeiros. Provavelmente ela sera o StartPoint dos humanos (Pretendo colocar um StartPoint diferente para cada raca do jogo, como no WOW).Segue algumas imagens de como ela esta ficando: Bom... Antes de fazer a integracao do meu mapa inicial com o MySQL eu resolvi fazer mais alguns ajustes no mapa e criar bancos sentaveis para os jogadores.Comecei com as funcoes do Malese Kish, pois ja tinha testado o modulo e ele e cheio de otimas ideias. Porem, os bancos so tinham espaco para uma pessoa sentar. Ficava estranho, e fui pesquisar uma maneira de resolver isso.Acabei encontrando e baixando as Sittable Chair do Pacha e dentro dele tinha um blueprint chamado SitBox. Eu entao montei um grupo onde colocava um banco comum e tres SitBox dentro dele (O SitBox e invisivel) e funcionou quase perfeitamente. O personagem sentava no ar e so depois era transportado para o banco. Nos scripts do Malese Kish isso nao acontecia e, comparando os dois codigos, eu percebi que o Patcha usava os comandos ActionJumpToLocation e ActionPlayCustomAnimation enquanto que o Moloch usava apenas JumpToLocation e PlayCustomAnimation. Eu alterei as linhas e, como suspeitava, o problema foi resolvido. Alterei tambem o comando onde era calculado a direcao pra onde o jogador ficaria depois de sentado, pois a versao do Patcha era bem estranho.O evento OnUse do SitBox ficou assim://:://///////////////////////////////////////////////:: OnUse: Sit//:: pat_sitted//::///////////////////////////////////////////////* Simple script to make PCs sit on a placeable*///::////////////////////////////////////////////////:: Created By: Patcha//:: Created On: 2006-12-08//:: v1.76 By: Patcha//:: v1.73 On: 2007-06-15//:: dates: aaaa-mm-gg//::////////////////////////////////////////////////::Change: SubHeaven 07/05/2008 Changed the functions ActionJumpToLocation for // JumpToLocation and ActionPlayCustomAnimation// for PlayCustonAnimation to fix the where the // PC sit in the air before be transported for// the chair location.//::Change: SubHeaven 07/05/2008 Changed the funcion GetNormalizedDirection() for// only the GetFacing to fix bugs with the PC directions// after sitting.void ActionPlayCustomAnimation(object oObject, string sAnimationName, int nLooping, float fSpeed = 1.0f){ PlayCustomAnimation(oObject, sAnimationName, nLooping, fSpeed);}// float GetNormalizedDirection(float fDirection):// * This script returns a direction normalized to the range 0.0 - 360.0// * Copyright (c) 2002 Floodgate Entertainment// * Created By: Naomi Novik// * Created On: 11/08/2002float GetNormalizedDirection(float fDirection){ float fNewDir = fDirection; while (fNewDir >= 360.0) { fNewDir -= 360.0; } while (fNewDir <= 0.0) { fNewDir += 360.0; } return fNewDir;}void main(){ object oChair = OBJECT_SELF; object oSitter = GetLastUsedBy(); object oLastSitter = GetLocalObject(oChair, "lastsitted"); string sChair = GetTag(oChair); string sAutofit = GetLocalString(oChair, "autofit"); int iHeading = GetLocalInt(oChair, "degree"); int iPC_size = GetLocalInt(oChair, "size"); //Assign the heading degrees location lChair_o = GetLocation(oChair); //Old code: Change #2 //location lChair = Location(GetArea(oChair), GetPositionFromLocation(lChair_o), GetNormalizedDirection(GetFacingFromLocation(lChair_o) + iHeading)); //New code : Change #2 location lChair = Location(GetArea(oChair), GetPositionFromLocation(lChair_o), GetFacing(oChair)); //End Change #2 //Check if seat is free if(GetDistanceBetween(oLastSitter, oChair) == 0.0f && GetArea(oLastSitter)