- Katılım
- 6 Mayıs 2022
- Konular
- 847
- Mesajlar
- 1,072
- Tepkime puanı
- 15
- M2 Yaşı
- 3 yıl 18 gün
- Trophy Puan
- 38
- M2 Yang
- 13,239
Oyun içinde CH değiştirme sistemini entegre etmek için gerekli adımları ve kod değişikliklerini içeren detaylı bir rehber. Bu sistem, oyun deneyimini geliştirerek playerların farklı kanallara kolayca geçiş yapmasını sağlar.
OYUN SEÇENEKLERİNE EKLEMEK İSTEYEN İÇİN Anlatım:
<button type="button" class="bbCodeSpoiler-button button" data-xf-click="toggle" data-xf-init="tooltip" title="Spoyleri ortaya çıkarmak veya gizlemek için tıklayın">
Spoyler
</button>
uigameoptions.py
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.showsalesTextButtonList.append(GetObject("salestext_off_button"))</code></pre>
Altına eklenir:
Burdan alın
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.showsalesTextButtonList[1].SAFE_SetEvent(self.__OnClickSalesTextOffButton)</code></pre>
Altına Eklenir:
Burdan alın
En sona eklenir:
Burdan alın
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.showsalesTextButtonList = []</code></pre>
Altına eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.ChangeChannelButtonList = []</code></pre>
constInfo.py
açılır ve herhangi bir yere eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>change_time = 0</code></pre>
uiscript/gameoptiondialog.py
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>TEMPORARY_X = +13</code></pre>
Değiştirilir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>TEMPORARY_X = +14</code></pre>
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> { "name" : "titlebar", "type" : "titlebar", "style" : ("attach",), "x" : 8, "y" : 8, "width" : 284, "color" : "gray", "children" : ( { "name":"titlename", "type":"text", "x":0, "y":3, "text" : uiScriptLocale.GAMEOPTION_TITLE, "horizontal_align":"center", "text_horizontal_align":"center" }, ), },</code></pre>
Altına Eklenir:
Burdan alın
Aratılır 2 kere:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>"height" : 25*11+8,</code></pre>
Değiştirilir 2 kere:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>"height" : 25*11+8+25,</code></pre>
Server/game/src/cmd.cpp
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_item);</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_ch);</code></pre>
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> { "pvp", do_pvp, 0, POS_DEAD, GM_PLAYER },</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> { "ch", do_ch, 0, POS_DEAD, GM_PLAYER },</code></pre>
cmd_general.cpp açılır
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_set_walk_mode) { ch->SetNowWalking(true); ch->SetWalking(true); }</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_ch) { char arg1[256]; one_argument(argument, arg1, sizeof(arg1)); if (!*arg1) return; int new_ch; str_to_number(new_ch, arg1); if( new_ch <1 || new_ch >4) return; if (!ch->IsPC()) return; ch->ChannelSwitch(new_ch); }</code></pre>
char.h
Açılır ve Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> void StartWarpNPCEvent();</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> void ChannelSwitch(int new_ch);</code></pre>
char.cpp
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>EVENTFUNC(warp_npc_event) { char_event_info* info = dynamic_cast<char_event_info*>( event->info ); if ( info == NULL ) { sys_err( "warp_npc_event> <Factor> Null pointer" ); return 0; } LPCHARACTER ch = info->ch; if (ch == NULL) { // <Factor> return 0; } if (!ch->GetSectree()) { ch->m_pkWarpNPCEvent = NULL; return 0; } FuncCheckWarp f(ch); if (f.Valid()) ch->GetSectree()->ForEachAround(f); return passes_per_sec / 2; }</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>void CHARACTER::ChannelSwitch(int iNewChannel) { long lAddr; long lMapIndex; WORD wPort; long x = this->GetX(); long y = this->GetY(); if (!CMapLocation::instance().Get(x, y, lMapIndex, lAddr, wPort)) { return; } if(lMapIndex >= 10000){ return; } std::map<WORD, int>ch; for(int i = 0; i < 4; i++) { for(int i2 = 1; i2 < 9; i2++) { ch[29*1000 + i*100 + i2] = i+1; } } int chan; if(ch.find(wPort) != ch.end()) { chan = ch[wPort]; } else { return; } Stop(); Save(); if(GetSectree()) { GetSectree()->RemoveEntity(this); ViewCleanup(); EncodeRemovePacket(this); } TPacketGCWarp p; p.bHeader = HEADER_GC_WARP; p.lX = x; p.lY = y; p.lAddr = lAddr; p.wPort = (wPort - 100*(chan-1) + 100*(iNewChannel-1)); GetDesc()->Packet(&p, sizeof(TPacketGCWarp)); }</code></pre>
ÖRNEK PORT DAĞILIMI:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>CH1: Core1: 29001 Core2: 29002 Core3: 29003 Core4: 29004 CH2: Core1: 29101 Core2: 29102 Core3: 29103 Core4: 29104 CH3: Core1: 29201 Core2: 29202 Core3: 29203 Core4: 29204</code></pre>
4 ü ch sayınıza göre değiştiriniz ...
Oyun seçeneklerine eklemek isten olabilir o yüzden kaldırmadım.
VT
Link
Alternatif Link
V.t
Gelelim şu port dağılımlarına:
Eğer portlarınız 13000,16000,19000 ise:
For döngüsünü böyle değiştirin:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> for(int i = 0; i < 4; i++) { ch[(13 * 1000) + (i * 3000)] = i + 1; if (i == 3) ch[(13 * 1000) + ((i * 3000) - 1000)] = i + 1; }</code></pre>
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> p.wPort = (wPort - 100*(chan-1) + 100*(iNewChannel-1));</code></pre>
Bu kısmıda bu şekilde değiştirin:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> p.wPort = (wPort - 3000*(chan-1) + 3000*(iNewChannel-1));</code></pre>
Bu kısım portlarınızın kaç arttığıdır ona göre düzenleyin.
Hata alırsanız veya port kısmını yapamazsanız yorum olarak atabilirsiniz.
OYUN SEÇENEKLERİNE EKLEMEK İSTEYEN İÇİN Anlatım:
<button type="button" class="bbCodeSpoiler-button button" data-xf-click="toggle" data-xf-init="tooltip" title="Spoyleri ortaya çıkarmak veya gizlemek için tıklayın">
Spoyler
</button>
uigameoptions.py
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.showsalesTextButtonList.append(GetObject("salestext_off_button"))</code></pre>
Altına eklenir:
Burdan alın
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.showsalesTextButtonList[1].SAFE_SetEvent(self.__OnClickSalesTextOffButton)</code></pre>
Altına Eklenir:
Burdan alın
En sona eklenir:
Burdan alın
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.showsalesTextButtonList = []</code></pre>
Altına eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>self.ChangeChannelButtonList = []</code></pre>
constInfo.py
açılır ve herhangi bir yere eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>change_time = 0</code></pre>
uiscript/gameoptiondialog.py
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>TEMPORARY_X = +13</code></pre>
Değiştirilir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>TEMPORARY_X = +14</code></pre>
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> { "name" : "titlebar", "type" : "titlebar", "style" : ("attach",), "x" : 8, "y" : 8, "width" : 284, "color" : "gray", "children" : ( { "name":"titlename", "type":"text", "x":0, "y":3, "text" : uiScriptLocale.GAMEOPTION_TITLE, "horizontal_align":"center", "text_horizontal_align":"center" }, ), },</code></pre>
Altına Eklenir:
Burdan alın
Aratılır 2 kere:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>"height" : 25*11+8,</code></pre>
Değiştirilir 2 kere:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>"height" : 25*11+8+25,</code></pre>
Server/game/src/cmd.cpp
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_item);</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_ch);</code></pre>
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> { "pvp", do_pvp, 0, POS_DEAD, GM_PLAYER },</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> { "ch", do_ch, 0, POS_DEAD, GM_PLAYER },</code></pre>
cmd_general.cpp açılır
Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_set_walk_mode) { ch->SetNowWalking(true); ch->SetWalking(true); }</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>ACMD(do_ch) { char arg1[256]; one_argument(argument, arg1, sizeof(arg1)); if (!*arg1) return; int new_ch; str_to_number(new_ch, arg1); if( new_ch <1 || new_ch >4) return; if (!ch->IsPC()) return; ch->ChannelSwitch(new_ch); }</code></pre>
char.h
Açılır ve Aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> void StartWarpNPCEvent();</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> void ChannelSwitch(int new_ch);</code></pre>
char.cpp
Açılır ve aratılır:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>EVENTFUNC(warp_npc_event) { char_event_info* info = dynamic_cast<char_event_info*>( event->info ); if ( info == NULL ) { sys_err( "warp_npc_event> <Factor> Null pointer" ); return 0; } LPCHARACTER ch = info->ch; if (ch == NULL) { // <Factor> return 0; } if (!ch->GetSectree()) { ch->m_pkWarpNPCEvent = NULL; return 0; } FuncCheckWarp f(ch); if (f.Valid()) ch->GetSectree()->ForEachAround(f); return passes_per_sec / 2; }</code></pre>
Altına Eklenir:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>void CHARACTER::ChannelSwitch(int iNewChannel) { long lAddr; long lMapIndex; WORD wPort; long x = this->GetX(); long y = this->GetY(); if (!CMapLocation::instance().Get(x, y, lMapIndex, lAddr, wPort)) { return; } if(lMapIndex >= 10000){ return; } std::map<WORD, int>ch; for(int i = 0; i < 4; i++) { for(int i2 = 1; i2 < 9; i2++) { ch[29*1000 + i*100 + i2] = i+1; } } int chan; if(ch.find(wPort) != ch.end()) { chan = ch[wPort]; } else { return; } Stop(); Save(); if(GetSectree()) { GetSectree()->RemoveEntity(this); ViewCleanup(); EncodeRemovePacket(this); } TPacketGCWarp p; p.bHeader = HEADER_GC_WARP; p.lX = x; p.lY = y; p.lAddr = lAddr; p.wPort = (wPort - 100*(chan-1) + 100*(iNewChannel-1)); GetDesc()->Packet(&p, sizeof(TPacketGCWarp)); }</code></pre>
ÖRNEK PORT DAĞILIMI:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code>CH1: Core1: 29001 Core2: 29002 Core3: 29003 Core4: 29004 CH2: Core1: 29101 Core2: 29102 Core3: 29103 Core4: 29104 CH3: Core1: 29201 Core2: 29202 Core3: 29203 Core4: 29204</code></pre>
4 ü ch sayınıza göre değiştiriniz ...
Oyun seçeneklerine eklemek isten olabilir o yüzden kaldırmadım.
VT
Link
Alternatif Link
V.t
Gelelim şu port dağılımlarına:
Eğer portlarınız 13000,16000,19000 ise:
For döngüsünü böyle değiştirin:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> for(int i = 0; i < 4; i++) { ch[(13 * 1000) + (i * 3000)] = i + 1; if (i == 3) ch[(13 * 1000) + ((i * 3000) - 1000)] = i + 1; }</code></pre>
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> p.wPort = (wPort - 100*(chan-1) + 100*(iNewChannel-1));</code></pre>
Bu kısmıda bu şekilde değiştirin:
<pre class="bbCodeCode line-numbers language-none" dir="ltr" data-line="" data-xf-init="CMTV-code-block-extend" data-lang=""><code> p.wPort = (wPort - 3000*(chan-1) + 3000*(iNewChannel-1));</code></pre>
Bu kısım portlarınızın kaç arttığıdır ona göre düzenleyin.
Hata alırsanız veya port kısmını yapamazsanız yorum olarak atabilirsiniz.