Jump to content

Jfirewall

Developer
  • Content Count

    330
  • Joined

  • Last visited

  • Days Won

    13

Jfirewall last won the day on March 13

Jfirewall had the most liked content!

About Jfirewall

  • Rank
    ~Jfirewall Works~
  • Birthday 11/19/1996

Profile Information

  • Gender
    Array

Contact Methods

  • Skype
    Array
  • Discord
    Array

Recent Profile Visitors

7,285 profile views
  1. Yo lo vendo mas barato xDD ok´no, buena base suerte con la venta
  2. en lo personal yo lo uso mejor en pet y monturas, me parece muy molesto esa puta bandera en un pet o una montura agregamos primero: #include "../gamelib/ItemManager.h" buscas void CInstanceBase::__AttachEmpireEffect(DWORD eEmpire) debajo de CInstanceBase* pkInstMain=__GetMainInstancePtr(); agregas: CItemData * pItemData = CItemManager::Instance().GetSelectedItemDataPointer(); debajo de if (IsResource()) ponemos if (CItemData::COSTUME_MOUNT) return; if (GetRace() >= 53001 && GetRace() <= 53251) return;
  3. local c,query = mysql_direct_query("SELECT * FROM account.account WHERE id = '"..pc.get_account_id().."' LIMIT 1;") if query[1].ok < 1 then say'existe un valor menor a 1' else say'existe un valor de 1'
  4. Muy buen trabajo buena suerte con tus ventas
  5. El servidor cuenta con un multilenguaje, el cual podrás configurarlo al idioma que tu desees, el cual te traducirá idioma de cliente, misiones y nuestros innovadores eventos. Te dejo una pequeña imagen, todavía no está terminado y tendrá un mejor estilo.
  6. tu puedes crear tus funciones dentro de una misma quest la funcionalidad de esto es para esto por ejm, tu creas una nueva funcion en tu source ejm questlua_pc int pc_zone(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); ch->ChatPacket(CHAT_TYPE_INFO, "hola zone"); } quet zone begin state start begin when login begin pc.zone() end end end cuando tu compilas te generaria un error el cual seria que debes declarar esta funcion pc.zone, lo que hace lo que publico es quitar que te genere el error y solo compiles y ya, aclaro esto es para los que nos da pereza cada rato estar agregando y agregando funciones
  7. Hola, andaba creando funciones y me daba pereza agregar siempre en el quest_fuctions entonces decidí quitarlo desde mi qc Primero vamos a qc.cc y buscamos: enum parse_state dentro de esto eliminamos esto ST_FUNCTION_NAME, luego buscamos y eliminamos esto : int none_c_function(lua_State* L) { return 0; } set<string> function_defs; set<string> function_calls; void RegisterDefFunction(const string& fname) { function_defs.insert(fname); } void RegisterUsedFunction(const string& fname) { function_calls.insert(fname); } void CheckUsedFunction() { bool hasError = false; set<string> error_func; for (typeof(function_calls.begin()) it = function_calls.begin(); it != function_calls.end(); ++it) { if (function_defs.find(*it) == function_defs.end()) { hasError = true; error_func.insert(*it); } cout << "Used : " << *it << endl; } if (hasError) { cout << "Calls undeclared function! : " << endl; for (typeof(error_func.begin()) it = error_func.begin(); it != error_func.end(); ++it) { cout << *it << endl; } abort(); } } void load_quest_function_list(const char* filename) { ifstream inf(filename); string s; while (!inf.eof()) { inf >> s; if (inf.fail()) break; RegisterDefFunction(s); } } luego buscamos esto y lo eliminamos: load_quest_function_list("quest_functions"); luego buscamos esto y lo eliminamos: else if (t.token == TK_FUNCTION) { ps = ST_FUNCTION_NAME; luego buscamos esto y lo eliminamos OJO EXISTEN DOS ELIMINAR LOS DOS: if (!callname.empty()) { lookahead(&lexstate); if (lexstate.lookahead.token == '(') { RegisterUsedFunction(callname); registered = true; } callname.clear(); } else if (lexstate.t.token == '(') { if (!registered && prev.t.token == TK_NAME) RegisterUsedFunction(getstr(prev.t.seminfo.ts)); registered = false; } luego buscamos esto y lo eliminamos: case ST_FUNCTION_NAME: if (t.token == TK_NAME) { current_function_name = getstr(t.seminfo.ts); RegisterDefFunction(quest_name+"."+current_function_name); ps = ST_FUNCTION_ARG; } break; luego buscamos esto y lo eliminamos: CheckUsedFunction(); Compilamos nuestro qc, y listo ya no tendran que declarar mas funciones nuevas en el quest_fuctions
  8. say_size(0, 0) setbgimage('test.tga')
  9. quest mob begin state start begin function Tiempo() local mTime = 60*60*24*30 --Cada 30 dias return mTime end function Valores() local mValue = { (pc.getqf("uso")), (pc.getqf("tiempo")) } return mValue when x.use begin say_title'hola' say'....' pc.setqf("uso", 1) pc.setqf("tiempo", get_time() + mob.Tiempo()) chat'en 30 dias el mob sera invocado' end when login with mob.Valores()[1] > 0 begin if get_time() > mob.Valores()[2] then pc.invocar_mob(id,x,y) end end end end questlua_pc.cpp #ifdef ENABLE_INVOCAR_MOB int pc_invocar_mob(lua_State* L) { if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3)) { sys_err("argumento invalido"); return 0; } CQuestManager& mob = CQuestManager::instance(); DWORD vid = 0; DWORD dwVnum = (DWORD) lua_tonumber(L, 1); long x = (long) lua_tonumber(L, 2); long y = (long) lua_tonumber(L, 3); float radius = lua_isnumber(L, 4) ? (float) lua_tonumber(L, 4) : 0; DWORD count = (lua_isnumber(L, 5)) ? (DWORD) lua_tonumber(L, 5) : 1; if (count == 0) count = 1; while (count --) { if (radius<1) { LPCHARACTER ch = mob->CaerMob(dwVnum, x, y); if (ch && !vid) vid = ch->GetVID(); } else { float angle = number(0, 999) * M_PI * 2 / 1000; float r = number(0, 999) * radius / 1000; long nx = x + (long)(r * cos(angle)); long ny = y + (long)(r * sin(angle)); LPCHARACTER ch = mob->CaerMob(dwVnum, nx, ny); if (ch && !vid) vid = ch->GetVID(); } } lua_pushnumber(L, vid); return 1; } #endif #ifdef ENABLE_INVOCAR_MOB { "invocar_mob", pc_invocar_mob }, #endif service.h #define ENABLE_INVOCAR_MOB
  10. quest coins begin state start begin when 27992.use or 27993.use or 27994.use begin coins = { [27992] = { "Moneda de Oro", 1000}, [27993] = { "Moneda de Plata", 500}, [27994] = { "Moneda de Bronce", 250} } say_title(""..coins[item.get_vnum()][1].."") say("Si utilizas esta moneda puedes obtener una") say("determinada cantidad de coins canjeables en la") say("ItemShop del servidor.") say("Con esta "..coins[item.get_vnum()][1].." obtendras "..coins[item.get_vnum()][2].." coins.") say("") say("¿Quieres canjear la moneda por "..coins[item.get_vnum()][2].." coins?") local s = select("Si","No") if s == 2 then return end say_title(""..coins[item.get_vnum()][1].."") say("Felicidades!") say("Has obtenido "..coins[item.get_vnum()][2].." coins.") say("Entra en la ItemShop de nuestro servidor para") say("canjearlas.") pc.cambiar_coins(coins[item.get_vnum()][2]) item.remove() end end end questlua_pc.cpp #ifdef ENABLE_FUNCION_COINS int pc_cambiar_coins(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); const char * coins = lua_tostring(L, 1); char szQuerycoins[QUERY_MAX_LEN]; snprintf(szQuerycoins, sizeof(szQuerycoins), "UPDATE account.account SET coins=coins+'%s' WHERE id=%u", coins, ch->GetDesc()->GetAccountTable().login); DBManager::Instance().DirectQuery(szQuerycoins); db_clientdesc->DBPacket(HEADER_GD_RELOAD_ADMIN, 0, NULL, 0); return 0; } #endif { "cambiar_coins", pc_cambiar_coins }, service.h #define ENABLE_FUNCION_COINS
×
×
  • Create New...