Como prometido. Aqui esta meu primeiro script. Esta funcionando perfeitamente como eu era meu objetivo inicial, mas agora quero adicionar a capacidade de diminuir a chance de drop de item a medida que a diferenca de level entre o jogador e a criatura for maior.Em todo caso ai esta://:: sh_calculardrop/* Calcule the loot of creature. You can change the drop rate creating and modifing a variable called sh_iDropRate in the item variable of type float that can be between 0.00 to 100.00 that represent the chance drop of the item (More is better) and create a variable named sh_mDropRate in the in the module set of type float tha can be any positive number. If sh_iDropRate don't exists, I use 0 instead (No chance to drop), if sh_mDropRate don't exists, I use 1 instead (No modification). *///::////////////////////////////////////////////////////:: Copyright (c) 2008 SubHeaven World//:: Created By: SubHeaven//:: Created On: 06/12/2008//:://////////////////////////////////////////////////void CalcularDrop(object oCriatura){ //Vejo se a criatura e valida e se nao e um jogador if (oCriatura != OBJECT_INVALID && !GetIsPC(oCriatura)) { //Recupero o modificador de chance de drop do modulo float lfGlobalRate = GetLocalFloat(GetModule(), "sh_mDropRate"); //Pego o primeiro item do inventario da criatura object oItem = GetFirstItemInInventory(oCriatura); //Faco um loop no inventario da criatura while (oItem != OBJECT_INVALID) { //Pego a chance de drop do item float lfItemRate = GetLocalFloat(oItem, "sh_iDropRate"); //Calculo um numero aleatorio de 0 a 10000 float lfChance = IntToFloat(Random(10000)) / 100; //Verifico se a chance de drop do item esta dentro dos //valores permitidos (entre 0 e 100%) //Se nao eu ajusto para um valor padrao if (lfItemRate > 100.0) { lfItemRate = 100.0; } else if (lfItemRate < 0.0) { lfItemRate = 0.0; } //Aqui eu verifico se o valor aleatorio que consegui //anteriormente e maior que a chance de drop do item //contando com o ajuste do modulo if ((lfItemRate * lfGlobalRate) < lfChance) DestroyObject(oItem); //Esse aqui sao apenas algumas linhas de debug //Ele mostram os valores aletorios conseguidos //e as chances de drop de cada item string sMensagem = "(" + FloatToString(lfChance) + ") DC = " + FloatToString(lfItemRate * lfGlobalRate); SendMessageToPC(GetFirstPC(), sMensagem); SendMessageToAllDMs(sMensagem); PrintString(sMensagem); //Terminado com um item eu parto pro proximo item //do inventario oItem = GetNextItemInInventory(oCriatura); } }} Olaaaaa terraqueos.Pois bem, tive meu primeiro final de semana de ferias. Porem foram dias de explorar as catacumbas esquecidas do meu kitinete e dar uma faxina la.Porem, consegui fazer o bendito monstro andar. O comando WalkWayPoint parece nao fazer nada. Detodas as formas que o coloquei ele nao fazia meu monstro andar pelos WayPoints, eu entao experimentei o comando ActionRandomWalk e funcionou perfeitamente, mas eu nao estava satisfeito, entao criei um script para o evento OnHeartBeat da criatura para ela mover de um WayPoint para outro, andar aleatoriamente por um tempo, mover para o proximo WayPoint, andar aleatoriamente e assim seguir o ciclo.Aqui esta o cript que criei://::////////////////////////////////////////////////////:: sh_c_heartbeat/* Default OnHeartbeat script for NPCs. This script causes NPCs to perform default animations while not otherwise engaged. This script duplicates the behavior of the default script and just cleans up the code and removes redundant conditional checks.