Skocz do zawartości

Rozwiązane przez Thorek

Przejdź do rozwiązania

Featured Replies

Opublikowano
  • Programista

Możesz to zrobić w taki sposób, w jaki otwiera się np. cube:

 

Bindujesz funkcję Lua dla questa, czyli pc.open_bazar().

Ta funkcja może zawierać identyczną logikę co pc.open_cube().

Później tylko zostaje pakiet do klienta i PyCallClassMemberFunc o nazwie np. BINARY_BAZAR_OPEN.

 

Następnie w game.py robisz def o tej samej nazwie, no a w nim otwierasz okno.

Edytowane przez Thorek

Opublikowano
  • Autor

Coś w tym stylu?

 

questlua_pc.cpp:

 

[code]int pc_open_bazar(lua_State* L)
{
    LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
    if (!ch)
        return 0;

    
    ch->ChatPacket(CHAT_TYPE_INFO, "Opening bazar...");

     "BINARY_BAZAR_OPEN"
    ch->GetDesc()->Packet("BINARY_BAZAR_OPEN", sizeof("BINARY_BAZAR_OPEN"));

    return 0;
}[/code]

 

questlua_pc.cpp

 

void RegisterPCFunctionTable()
{
    luaL_Reg pc_functions[] = {
        {"open_bazar", pc_open_bazar}, 
        {NULL, NULL}
    };

    luaL_register(L, "pc", pc_functions);
}
 

game.py


def BINARY_BAZAR_OPEN(self):

self.interface.OpenBazarWindow()


networkModule.py

 

self.ServerCommandParser["BINARY_BAZAR_OPEN

Edytowane przez benio101

Opublikowano
  • Programista
  • Rozwiązanie
20 minut temu, benio101 napisał(a):

Coś w tym stylu?

 

questlua_pc.cpp:

 

[code]int pc_open_bazar(lua_State* L)
{
    LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
    if (!ch)
        return 0;

    
    ch->ChatPacket(CHAT_TYPE_INFO, "Opening bazar...");

     "BINARY_BAZAR_OPEN"
    ch->GetDesc()->Packet("BINARY_BAZAR_OPEN", sizeof("BINARY_BAZAR_OPEN"));

    return 0;
}[/code]

 

questlua_pc.cpp

 

void RegisterPCFunctionTable()
{
    luaL_Reg pc_functions[] = {
        {"open_bazar", pc_open_bazar}, 
        {NULL, NULL}
    };

    luaL_register(L, "pc", pc_functions);
}
 

game.py


def BINARY_BAZAR_OPEN(self):

self.interface.OpenBazarWindow()


networkModule.py

 

self.ServerCommandParser["BINARY_BAZAR_OPEN

Matko jedyna, nie, ale w sumie zapomniałem o możliwości wysłania komendy, żeby było Ci prościej zrób tak:

int pc_open_bazar(lua_State* L)
{
    LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

    if (!ch)
        return 0;

    ch->ChatPacket(CHAT_TYPE_COMMAND, "OpenBazar");
    return 0;
}

 

game.py:

def __ServerCommand_Build(self):
	serverCommandList = {
		"DayMode": self.__DayMode_Update,
		# ...
		"OpenBazar": self.OpenBazar,
	}

# ...

def OpenBazar(self):
	# Tu otwierasz co trzeba

 

Edytowane przez Thorek

Opublikowano

Oraz możesz też wywołać komendę bezpośrednio w quescie bez tworzenia nowej funkcji questowej.

 

 quest wyszukiwarka begin
	state start begin
		when 20018.chat."Wyszukiwarka " with pc.level >= 1 begin
			cmdchat("nazwa_komendy")
		end
	end
end

Oraz jak Thorek pisal w game.py dodac ta komenda i funkcje do niej

Opublikowano
  • Programista

ty no faktycznie, zapomniałem kompletnie o cmdczacie xD

Opublikowano
  • Autor
35 minut temu, Thorek napisał(a):

Matko jedyna, nie, ale w sumie zapomniałem o możliwości wysłania komendy, żeby było Ci prościej zrób tak:

int pc_open_bazar(lua_State* L)
{
    LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

    if (!ch)
        return 0;

    ch->ChatPacket(CHAT_TYPE_COMMAND, "OpenBazar");
    return 0;
}

 

game.py:

def __ServerCommand_Build(self):
	serverCommandList = {
		"DayMode": self.__DayMode_Update,
		# ...
		"OpenBazar": self.OpenBazar,
	}

# ...

def OpenBazar(self):
	# Tu otwierasz co trzeba

 

I do questa:

 

quest open_bazar begin

   state start begin

      when xxx.chat.begin

         pc.open_bazar()

      end

   end

end

 

I to będzie na tyle?

 

Edytowane przez benio101

Opublikowano
1 minutę temu, benio101 napisał(a):

I do questa:

 

quest open_bazar begin

   state start begin

      when xxx.chat.begin

         pc.open_bazar()

      end

   end

end

 

 

Dokladnie 

Opublikowano
  • Autor

I taka sama zasada będzie jak dodam item "Pierscien" i po kliknieciu aby otwierało ten sam bazar 

Opublikowano
9 minut temu, benio101 napisał(a):

I taka sama zasada będzie jak dodam item "Pierscien" i po kliknieciu aby otwierało ten sam bazar 

Tak. Wtedy dajesz 

 

when id_itemu.use begin

Opublikowano
  • Autor

To teraz zostało mi edytować dodawanie itemu, a mianowicie. Zmienic aby gracz mogl dodawać itemy do wyszukiwarki nie otwierajac sklepu.

Proszę o wskazówki nie gotowca

Z góry dziekuje i pozdrawiam 

Edytowane przez benio101

Opublikowano
40 minut temu, benio101 napisał(a):

To teraz zostało mi edytować dodawanie itemu, a mianowicie. Zmienic aby gracz mogl dodawać itemy do wyszukiwarki nie otwierajac sklepu.

Proszę o wskazówki nie gotowca

Z góry dziekuje i pozdrawiam 

Ciężko zrozumieć pytanie. Ja np nie rozumiem 

Opublikowano

Wyszukiwarka to wyszukiwarka, a nie sklep do sprzedaży. 

Opublikowano
  • Programista
W dniu 23.09.2024 o 00:00, Shar506 napisał(a):

Oraz możesz też wywołać komendę bezpośrednio w quescie bez tworzenia nowej funkcji questowej.

 

 quest wyszukiwarka begin
	state start begin
		when 20018.chat."Wyszukiwarka " with pc.level >= 1 begin
			cmdchat("nazwa_komendy")
		end
	end
end

Oraz jak Thorek pisal w game.py dodac ta komenda i funkcje do niej

Tak z ciekawości. Po co ten warunek z pc.level >= 1? Warto też dodać setskin(NOWINDOW)

 

W dniu 23.09.2024 o 00:38, benio101 napisał(a):

To teraz zostało mi edytować dodawanie itemu, a mianowicie. Zmienic aby gracz mogl dodawać itemy do wyszukiwarki nie otwierajac sklepu.

Proszę o wskazówki nie gotowca

Z góry dziekuje i pozdrawiam 

Jeśli dla Ciebie problemem było zrobienie otwierania okna wyszukiwarki przez NPC to nie męcz się z tym

Opublikowano
5 godzin temu, KoYGeR napisał(a):

Tak z ciekawości. Po co ten warunek z pc.level >= 1? Warto też dodać setskin(NOWINDOW)

 

Jeśli dla Ciebie problemem było zrobienie otwierania okna wyszukiwarki przez NPC to nie męcz się z tym

A brałem z gotowego questa i nie usunąłem sprawdzania poziomu 

  • Poly zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.