-
Total de itens
1599 -
Registro em
-
Última visita
-
Dias Ganhos
7
Tudo que caotic postou
-
Creaturescripts function onOutfit(cid, old, current) return false end
-
Porque o ipb sempre retira uma parte do meu post ehaueh'. Exemplo: Bloqueia o player de abrir um container especifico. function onOpenContainer(cid, item) local container = {1212, 2555, 2922, 2292} local deny = true for i=1, #container do if item.itemid == container[i] then deny = false end end return deny end
- 7 respostas
-
- onopencontainer
- opencontainer
- (e 3 mais)
-
Eae galera xtibiaanna! Desenvolvi o evento OpenContainer para sair da configs do actions afinal e necessario especificar o id do item e isto limita muito, Vá em creatureevents.cpp e procure else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; e coloque isto embaixo : else if(tmpStr == "opencontainer") m_type = CREATURE_EVENT_OPENCONTAINER; Continuando procure: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; E coloque seguidamente: case CREATURE_EVENT_OPENCONTAINER: return "onOpenContainer"; Continuado creatureevents.cpp procure: case CREATURE_EVENT_KILL: return "cid, target, lastHit"; E coloque embaixo: case CREATURE_EVENT_OPENCONTAINER: return "cid, item"; EMBAIXO DA FUNÇÃO uint32_t CreatureEvent::executeOutfit(Creature* creature, const Outfit_t& old, const Outfit_t& current) Coloque: uint32_t CreatureEvent::executeOpenContainer(Player* player, Container* container) { //onOpenContainer(cid, container) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", container, env->addThing(container)); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaScriptInterface::pushThing(L, container, env->addThing(container)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeThink] Call stack overflow." << std::endl; return 0; } } Agora em creatureevents.h procure: uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Embaixo coloque: uint32_t executeOpenContainer(Player* player, Container* container); Procure em creatureevents.h: CREATURE_EVENT_DEATH, Coloque embaixo: CREATURE_EVENT_OPENCONTAINER, Vá em action.cpp e procure: if(Container* container = item->getContainer()) { if(container->getCorpseOwner() && !player->canOpenCorpse(container->getCorpseOwner()) && g_config.getBool(ConfigManager::CHECK_CORPSE_OWNER)) return RET_YOUARENOTTHEOWNER; Coloque emabaixo: bool deny = false; CreatureEventList talkEvents = player->getCreatureEvents(CREATURE_EVENT_OPENCONTAINER); for(CreatureEventList::iterator it = talkEvents.begin(); it != talkEvents.end(); ++it) { if(!(*it)->executeOpenContainer(player, container)) { deny = true; } }
- 7 respostas
-
- onopencontainer
- opencontainer
- (e 3 mais)
-
poketibia Função onSpawn(cid) para TFS 0.3.6
tópico respondeu ao lSainty de caotic em Linguagens de Programação
Opa colega so ta faltando o registro do evento. Sendo assim o creatureevent nunca sera chamado. -
Ficou muito feliz que o under vai assumir a adminstração. Uma pena você não ficar conosco.
-
doCreateMonsterNick(monster, nick, pos)
tópico respondeu ao caotic de caotic em Linguagens de Programação
if(!mType || nick.empty()) return NULL; A possiblidade do cara colocar uma string vazia logo o mType do monstro seria ignorado. Diminuição de linha é encheção de linguiça.- 28 respostas
-
- nick system
- mudança de nome
- (e 7 mais)
-
doCreateMonsterNick(monster, nick, pos)
tópico respondeu ao caotic de caotic em Linguagens de Programação
Deve ser na hora de eu copiar e acabei clicando em espaço sem perceber- 28 respostas
-
- nick system
- mudança de nome
- (e 7 mais)
-
Tudo bem galera xtibiana? Resolvi trazer a vocês um sistema de nick que permite mudar o nome do monstro in-game. A função e simples de se usar e não tem nenhum tipo de limitação ela foi desenvolvida na versão 8.6 com a tfs 0.3.6. Lets go: Vá em monster.h e procure isto: typedef std::list<Creature*> CreatureList; class Monster : public Creature { private: Monster(MonsterType* _mType); public: #ifdef __ENABLE_SERVER_DIAGNOSTIC__ static uint32_t monsterCount; #endif virtual ~Monster(); E coloque este codigo em baixo: std::string nick,realname; Continue em monster.h e procure: static Monster* createMonster(const std::string& name); E coloque embaixo: static Monster* createMonsterNick(const std::string& name, std::string nick); Procure também: virtual const std::string& getName() const {return mType->name;} E substitua por isto: virtual const std::string& getName() const {return nick;} Depois vá em monster.cpp e procure: Monster* Monster::createMonster(const std::string& name) { MonsterType* mType = g_monsters.getMonsterType(name); if(!mType) return NULL; return createMonster(mType); } Substitua por: Monster* Monster::createMonster(const std::string& name) { MonsterType* mType = g_monsters.getMonsterType(name); if(!mType) return NULL; mType->name = name; return createMonster(mType); } Monster* Monster::createMonsterNick(const std::string& name, std::string nick) { MonsterType* mType = g_monsters.getMonsterType(name); if(!mType) return NULL; if (!(nick == "")) { mType->name = nick; } return createMonster(mType); } Continuando em monster.cpp procure: currentOutfit = mType->outfit; Adicionar embaixo: nick = mType->name; Vá em luascript.h e procure isto static int32_t luaDoCreateNpc(lua_State* L); Embaixo coloque: static int32_t luaDoCreateMonsterNick(lua_State* L); static int32_t luaGetCreatureNickRealName(lua_State* L); Em luascript.cpp procure: //doPlayerSetIdleTime(cid, amount) lua_register(m_luaState, "doPlayerSetIdleTime", LuaScriptInterface::luaDoPlayerSetIdleTime); Coloque embaixo: //doCreateMonster(monster, nick, pos) lua_register(m_luaState, "doCreateMonsterNick", LuaScriptInterface::luaDoCreateMonsterNick); Continue em luascript.cpp e procure isto: int32_t LuaScriptInterface::luaGetCreatureName(lua_State* L) { //getCreatureName(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushstring(L, creature->getName().c_str()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Coloque isto: int32_t LuaScriptInterface::luaGetCreatureNickRealName(lua_State* L) { //getCreatureNickRealName(cid) ScriptEnviroment* env = getEnv(); if(Monster* monster = env->getCreatureByUID(popNumber(L))->getMonster()) lua_pushstring(L, monster->realname.c_str()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaScriptInterface::luaDoCreateMonsterNick(lua_State* L) { //doCreateMonsterNick(monster, nick, pos) ScriptEnviroment* env = getEnv(); PositionEx pos; popPosition(L, pos); std::string nick = popString(L); const std::string name = popString(L).c_str(); Monster* monster = Monster::createMonsterNick(name, nick); if(!monster) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if(!g_game.placeCreature(monster, pos)) { delete monster; errorEx("Cannot create monster: " + name); lua_pushboolean(L, false); return 1; } monster->realname = name; lua_pushnumber(L, env->addThing((Thing*)monster)); return 1; } -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Exemplo de uso: function onSay(cid, words, param, channel) local t = string.explode(param, ",") doCreateMonsterNick(t[1], t[2], getThingPos(cid)) return true end
- 28 respostas
-
- nick system
- mudança de nome
- (e 7 mais)
-
um bolo para o querido niver.
-
Bem mais pratico e parabéns. So tomar cuidado que mesmo em learn se a vocação não estiver liberada na xml não irá funcionar.
-
Mais facil você setar para que ele possa aprendar a usar a spell.
-
Não cara. Adoro as suas versões diretas. Chega a um ponto ser engraçado rs.
-
x,y = executeFormBashakara("4x2 + 1x -5 = 0 ") print(x) print(y) deu: false -16 tentei coloca o expoente 1 do segundo x, mas ainda sim n foi. x,y = executeFormBashakara("4x2 = 4 ") print(x) print(y) deu 0 0 sem coments x,y = executeFormBashakara("1x2 - 2x - 63 = 0 ") print(x) print(y) deu 1.4142135623731 -1.4142135623731 what the fuck, da onde saiu esse resultado escroto?? o correto seria -7 e 9... tenta fazer menor e de forma simples, fica mais facil de achar os erros, e geralmente da da mais certo. Da erro e por causa da função adptBhaskUnknownsNumbers(bash) Foda que quando fui conferir ela tava colocando zeros em valores de b ou c que ja existiam mais to resolvendo o problema. Vou pensar uma maneira de reduzir memoria. Se você retirar vai estar totalmente normal. Acabei de ver também que tinha colocado um (-) na formula final de bashkara ja concertei.
-
rs a um tempo atrás(não muito tempo) a maioria do pessoal que está discutindo eram grandes colegas de equipe. Interessante a mudança.
-
pega o bonde andando nao cara, se me deletou dos contatos pq eu te tirei do otp, pq voce nao faz anda sempre esperando que os oturos assumuam a sua responsabilidade, nao foi atoa que voce afundou o wt..... como ja disse nunca quiz cargos! so se voce prometer que na proxima vez voce vai revolucionar sua area e esquecer da minha! Ta sem o que falar mesmo em pia para revirar o passado. Mais enfim. Interessante que o otp nem foi levantado. O ########## sim...(O xtibia ainda não tiro o WT na lista de palavras bloqueadas)
-
Acho legal a confusão que fazem so para terem cargos. Porque seu colega subiu você chora argumentando bobagens. E outros ainda descem mais discutindo com eles rs.
-
Bhaskara e um formula matematica capaz de resolver uma equação de segunda grau(ax^2+bx+c) ela é muito abordada no 6°~9° do ensino fundamental chegando também no ensino medio. Eu fiz uma versão com ultlização simples basta colocar a equação de 2 grau numa string que ele irá resolver a sua equação. function string.explode(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return result[1] and result or 0 end function executeFormBashakara(bash) local function validateZero(x) local x = tostring(x) if string.sub(x, 1, 1) == "-" and string.sub(x, 2, 2) == "0" or not tonumber(x) then return 0 end return x end local function adptBhaskSing(bask) bask = string.gsub(bask, " ", "") bask = string.gsub(bask, "-", "+-") return bask end local function stringToNumber(str) for i =1, #str do local y = string.sub(str, 1, i) if y ~= "-" and y ~= "+" then if not tonumber(y) then return tonumber(x) end end x = y end return y end bash = adptBhaskSing(bash) a = string.explode(bash, "+")[1] b = string.explode(bash, "+")[2] c = string.explode(bash, "+")[3] delta = (stringToNumber(b)^2)+(-4*stringToNumber(a)*stringToNumber(c)) if delta < 0 then return false,delta end bhask1 = validateZero((stringToNumber(b)+math.sqrt(delta))/(2*stringToNumber(a))) bhash2 = validateZero((stringToNumber(b)-math.sqrt(delta))/(2*stringToNumber(a))) return bhask1,bhash2 end x,y = executeFormBashakara("4x2 = 0 ") print(x) print(y)
-
Eu tenho um respeito a ti piabeta afinal você chegou e expôs suas ideias. Boa sorte em sua jornada pokemon.
-
Tem um errinho meu colega. O return vai brekar o loop isso significa que o so um player especificamente o primeiro vai ser retornado. Uma array resolveria o problema.
- 11 respostas
-
- getplayersinarea
- amoeba13
- (e 2 mais)
-
tive que responder para não ficar com azar. tenho medo dessas coisas
-
[Encerrado] Erro de Conexão [Client PDA PWO v1]
tópico respondeu ao Farplay de caotic em Tópicos Sem Resposta
Muda o ip do client. Tem o tutorial no proprio topico não preciso explicar novamente. Boa sorte. -
A questão dos pokemons não evoluirem pode ser que eles so evoluem com stones. Como o gloom para vipuleme ou belossoum(apenas para stones) O lukas666 ja respondeu o resto a questão dos icones e so ativar. As stones por kill e so retirar em creaturescripts A pokedex e so retirar o gain items dela.
- 132 respostas
-
- 8.5
- pda by caotic
- (e 7 mais)
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.