Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

hajtt? - zdjęcie

hajtt?

Rejestracja: 17.08.2010
Aktualnie: Nieaktywny
Poza forum Ostatnio: 19.08.2010 18:05
-----

#108743 Naprawa LongJump

Napisane przez Miczu w 31.01.2010 12:10

Moglem zacytowac, ale kradlbym repute :-)
  • +
  • -
  • 4


#50826 Diablo Mod 5.9l [SQL]

Napisane przez Miczu w 21.03.2009 16:33

Diablo Mod 5.9l


Słynny DiabloMod już po polsku z nowymi postaciami levelami!

Instalacja:
Plik dbmod_5.9l.amxx do addons/amxmodx/plugins
Plik dbmod_5.9l.sma do addons/amxmodx/scripting
Archiwum "dbmod folder&models.rar" wypakować do cstrike. (nowy model)

Otwieramy w edytorze tekstowym plik amxmodx/configs/plugins.ini i dopisujemy na samym końcu: dbmod_5.9l.amxx

Cvary:
diablo_xpbonus ilość expa za zabicie standardowo ustawione na 7
diablo_xpbonus2 ilość expa za wykonania celu misji standardowo ustawione na 50
diablo_durability Tracisz wytrzymałość za każde obrażenia ? Ile za każdym razem
diablo_spawnchance 1/x szansa na zrespienia worka
SaveXp 1/0 zapisywanie doświadczenia
diablo_classes abcdefgh - które klasy maja być dostępne
diablo_avg  1 - zaczynanie od sredniej serwera (liczonego od lvl 1)
diablo_dmg_exp - za ile zabranego hp wrogowi dostaje sie 1 exp (domyslnie 20, 0 - off)

Cvary do SQL'a:
diablo_sql_host
diablo_sql_user
diablo_sql_pass
diablo_sql_database
diablo_sql_table

Komendy:
/komendy (pokazuje wszystkie komendy diablomoda)
/pomoc (tego chyba nie muszę tłumaczyć)
/czary (pokazuje menu z statystykami)
/rune (pokazuje menu sklepu możemy w nim ulepszać rożne przedmioty lub kupić księgę doświadczenia)
/reset (resetuje wszystkie punkty rozdane w statystykach)
/klasa (dzięki tej komendzie możemy zmienić swoja klasę)
/item lub /przedmiot (pokazuje informacje na temat przedmiotu tzn co robi itp.)
/drop (wyrzuca przedmiot)
/savexp (zapisywanie doświadczenia)
/klasy (wyświetla opis postaci)
/gracze - już naprawione

Nowosci:

-Naprawdę dużo optymalizacji
-każda klasa ma własny czar, który niezależny od itemu - noz (automatycznie)
-mnich - mur (5s)
-mag - fireball (5s, 3s jak ma stafa)
-zabojca - niewidzialnosc z nozem (10s)
-paladyn - golden bullet, +2 nabój w magazynku co daje instant hs (10s)
-lowca - gratis HE (5s)
-necro - pochłanianie zwłok wroga dla 20 hp
-ninja - +50 do speeda (10s)
- barba - odbija +2 naboi od niego (5s)
-wybór jakie klasy można wybrać
-zaczynanie gry od średniej serwera
-gdy jesteś w powietrzu archwing cię nie rani
-więcej, ale nie pamiętam

Informacje o modzie - dla chętnych - konsola 'mod' - tak by było w modzie upamiętnione osoby co szczególnie pomogły.


WAŻNE

dbmod +5.8 potrzebuje amxx'a 1.8.1 do poprawnego działania (wcześniejsze wersje maja błąd w bibliotece obsługujacej sql'a i w efekcie pojawiają sie crashe)

Jak sie nie pojawia menu wyboru klasy (/klasa) to znaczy ze jest problem z połączeniem sie do sql'a błędy z sql'a sa w folderze amxmodx/logs/diablo.log

Diablo Mod 5.9a zmiany:
- szybka poprawka w czasie gdy ten post był w połowie zrobiony xD
Diablo Mod 5.9b zmiany:
-każda klasa ma własna średnia - nie ma ze jak dużo gra np. łowcą a nikt ninja (same lvle 1) to nowy gracz ma ninje z lvl 15
Diablo Mod 5.9c zmiany:
-balance ninji (oslabienie) oraz paladyna(wzmocnienie - zmiana skilla - zamiast popychanie, odbijanie pociskow)
-2 nowe itemy (odbijanie pociskow)
-naprawa buga z wzmacnianiem itemow (fajne ze daliscie mi o tym znac... wcale... bug z 5.8 jeszcze :zly: )
-zmiana czaru zabujcy na niewidzialnosc
-skrocenie czasu rzucania czarow przez klasy

Diablo Mod 5.9e zmiany:
- int necro zwieksza leczone hp
- MEGA OPTYMALIZACJE SQL

Diablo Mod 5.9f zmiany:
- /klasa sama sie uruchamiala gdy nie trzeba bylo xD

Diablo Mod 5.9g zmiany:
- bug niewidzialnosci zabojcy

Diablo Mod 5.9h zmiany:
- nie poprawialem buga tym razem (bo juz nie ma :>)
- teraz nie trzeba trzymac E by czarowac skilla (dla tych co mieli problem z uruchamianiem itemow)
- necro zadaje dodatkowe obrazenia + maly wampiryzm

Diablo Mod 5.9i zmiany:
- Balans barby i paladyna (oslabienie i ograniczenie skillow)

Diablo Mod 5.9j zmiany:
- BUG (niestety) z skilem paladyna - nie tracilo sie magicznych pociskow gdy sie strzelalo w sciane (juz nie ma tak dobrze)

Diablo Mod 5.9k zmiany:
- BUG -kusza nie zadawala dmg

Diablo Mod 5.9l zmiany:
- BUG -zabijanie 2 trafieniami

Konfiguracja SQL'a Tutaj

Załączone pliki


  • +
  • -
  • 65


#28 Instalacja Pluginów AMXX

Napisane przez Gość w 08.01.2008 19:44

I. Pluginy występują w dwóch formatach “.sma” oraz “.amxx”:



.sma - Pliki w formacie “.sma” są to pliki źródłowe pluginów, aby można było uruchomić je na naszym serwerze należy je przekompilować na format “.amxx”, jak to zrobić masz opisane w TYM artykule, lub korzystając z naszego forumowego kompiatora: Kompilator - AMXX.pl: Support AMX Mod X

.amxx - Pliki w formacie “.amxx” są to już przekompilowane pluginy pod AmxMod X, czyli gotowe do instalacji na naszym serwerze.

II. Przedstawię instalację pluginu o przykładowej nazwie nazwa.amxx


1. Wrzucamy plik nazwa.amxx do folderu amxmodx/plugins

2. Otwieramy w edytorze tekstowym, najlepiej w “wordpad” plik amxmodx/configs/plugins.ini i dopisujemy na samym końcu:
nazwa.amxx
Następnie zapisujemy zmiany w pliku.

3 Jeśli w opisie pluginu są podane jakieś cvary (ustawienia np. "amx_costam") to otwieramy w edytorze tekstowym, najlepiej w “wordpad” plik amxmodx/configs/amxx.cfg i dopisujemy na samym końcu dany cvar i jego wartośc (np. amx_costam 1). Zapisujemy zmiany.


III. Gdy ściągamy gotowe pluginy (szczególnie te rozbudowane) to najczęściej mamy dostępne kilka folderów. Najlepiej omówię co znajduje się w tych wszystkich folderach AmxMod X’a, abyście wiedzieli gdzie należy umieszczać pozostałe pliki:



  • configs - Są tu wszystkie pliki konfiguracyjne AmxX’a oraz pluginów. Pliki”.ini” oraz “.cfg“.
  • data - Jest to folder przechowujący statystyki w formacie “.dat“, zawiera on również bardzo ważny folder o nazwie lang w którym przechowywane są pliki językowe wszystkich pluginów w formacie “.txt“.
  • modules - w tym folderze zawarte są wszystkie moduły “.dll” dla windows i “.so” dla linuxa.
  • plugins - Tutaj wrzucamy wszystkie pliki “.amxx“.
  • scripting - Tutak wrzucamy wszystkie pliki “.sma“.



#155794 Szukanie, edycja i istalacja pluginów krok po kroku

Napisane przez Tribox w 30.07.2010 08:06

(To jest mój 1 poradnik)

1. Wstęp
Aby wgrać jakikolwiek plugin, trzeba mieć serwer i oczywiście Amx Mod X wraz z Metamodem. Aby wgrać pluginy musisz mieć dostęp do panelu w firmie hostingowej gdzie serwer stoi (np. gamepix), oraz dostęp do FTP, chociaż to jest zwykle w panelu.
2. Szukanie pluginu
Plugin można znaleźć na internecie, więc szukamy. Odpowiednim miejsce jest TO forum lub AlliedMods. Gdy znajdziemy plugin, pobieramy wszystkie pliki, które są do pobrania na swój dysk twardy.
3. Wgrywanie i edycja pluginu
Mamy plugin. Jeśli wiemy co on robi, np. wyświetla informacje, śmiało możemy wejść w plik .sma lub .ini i edytować te informacje. Jednak trzeba być rozsądnym - jeden błąd i pluginu nie ma. Najlepiej zostawić to profesjonalistowm
Gdy już edytowaliśmy plugin, wgrywamy go.
Wchodzimy na stronę net2ftp - a web based FTP client i logujemy się wpisując dane do konta FTP. Wchodzimy kolejno w foldery .../cstrike/addons/amxmodx/plugins. Klikamy na przycisk upload/wyślij plik i wybierami plik z rozszerzeniem .amxx
Potem wchodzimy do .../cstrike/addons/amxmodx/scripting i wrzucamy tam plik z rozszerzeniem .sma
4. Wgrywanie dodatków
Teraz patrzymy co jeszcze jest w pluginie, np. muzyka lub modele. Zapisujemy to tak, jak jest w folderze z pluginem. Czyli gdy w folderze jest /sound/misc/roundsound1.wav zapisujemy do .../cstrike/sound/misc/roundsound1.wav
Gdy nie znajdujemy katalogu, wchodzimy w folder gdzie ma on być i klikamy "New Dir". Wpisujemy nazwę nowego katalogu i wgrywamy normalnie do niego, zgodnie z opisem u góry.
5. Instalacja pluginu
Wchodzimy w .../cstrike/addons/amxmodx/configs. Znajdujemy plik "plugins.ini", klikamy przy nim edit/edycja. Znadujemy nasz plik .amxx, kopiujemy jego nazwę i dopisujemy w ostatniej linijce, dopisując. amxx
6. Zakończenie

Wylogowujemy się, wchodzimy w panel naszego serwera i klikamy RESTART. Plugin zacznie działać gdy serwer się zresetuje
  • +
  • -
  • 5


#124701 Tworzenie textur Modelu Blocków + Wideo

Napisane przez Themo w 10.04.2010 12:11

Witam, w tym poradniku chciałbym przedstawić sposób na robienie modeli do Block Makera. Mówiąc szczerze to mój pierwszy tutorial.
Przede wszystkim potrzebny będzie jakiś program do edycji grafiki, ja używam gimpa.
Potrzebny też będzie program Jed's Half-Life Model Viewer.
(programy udostępniam Wam w załączniku)

Już wersja wideo !! -!- HD -!-
http://www.youtube.com/watch?v=qIq05nByDvg&fmt=22

Paczka.rar
Jeżeli link wygaśnie.
Kontakt :
Steam : Krzychol916
GG : 5667883


Youtube Filmik kliknij aby zobaczyć na pełnym ekranie

Jak zrobić model blocka?
Wymiary Modeli:
1. Small: Top: 128/128 Side : 128/64
2. Normal: Top : 512/512 Side : 512/64
3. Large: Top : 512/512 Side : 512/32
4. Pole: Top : 64/64 Side : 32/256
1. Obraz/Textura
Zaczynamy: Odpalamy program Gimp robimy nową warstwę 512/512.
Plik > Nowy > 512/512
Dołączona grafika
Gdy już mamy warstwę malujemy bądź wklejamy zdjęcie na tło.
Ja użyłem do tego gradienta (Flare Glow Angular 1) oraz kształt Spiralny (w lewo) na niebieskim tle, efekt:
Dołączona grafika
Dużo osób ma problem z podmianą grafiki w Jed's Half-Life Model Viewer. Aby podmienić grafikę dany Obraz musi być w 8 bitach.
Aby uzyskać obraz w 8 bitach bez dużej straty jakości, musimy połączyć wszystkie warstwy w jedną a następnie wcisnąć : Obraz > Tryb > Indeksowany > Konwertuj.
Dołączona grafika
przy zmianie na 8 bitów obraz jest mniej szczegółowy.ale to chyba nikomu nie przeszkadza, i tak nasza grafika w grze będzie miała wysoką jakość. Teraz należy zapisać obraz w formacie .bmp (Obraz Windows BMP)
Dołączona grafika
Dołączona grafika
Koniec.
•Tak samo robi się bok Blocków.

2. Model:
Odpalamy program Jed's Half-Life Model Viewer.
Klikamy File > Load Model > wybieramy model z paczki i Otwórz.
Dołączona grafika

Każdy model ma dwie textury Top i Side, czyli Góra i bok - które należy wykonać
Przechodzimy w zakładkę Textures, wykonane przez nas textury Top i Side importujemy na wcześniej wczytany model naszego blocka .
Dołączona grafika
Zapisujemy model poprzez wciśnięcie File > Save Model As... >określamy nazwę własną naszego modelu > klikamy zapisz.
Gotowe! Możecie cieszyć oko Waszą własną texturą.
Dołączona grafika

Jak dodać Blocki do własnego BM'a ?
//CIACH REKLAMA
Jeżeli zrobiłem coś nie zgodnie z regulaminem proszę napisać

Proszę o komentarze.
(DOWNLOAD Gimpa -->TU[nie mogłem dodać do załącznika])

UWAGA!!
Pamiętajmy jeżeli nasze blocki mają cyfry w nazwach muszą one być zapisane tak !!
NP.

bm_block_platform2
bm_block_platform2_large
bm_block_platform2_small
bm_block_platform2_pole

ŹLE!!

bm_block_platform2
bm_block_platform_large2
bm_block_platform_small2
bm_block_platform_pole2

Przykładowy Model który zrobilem Dla Kill-Zone.com
W załączniku ;d (Photoshop).

Załączone pliki


  • +
  • -
  • 9


#143868 Dodatek do CoD'a (SKLEP)

Napisane przez SpartakuS w 13.06.2010 11:26

Dołączona grafika
Dodaje Sklep do Call Off Duty mod, w którym można kupić wiele dodatków, napisałem go dla celów własnych, lecz nie będę samolubem i udostępnię go innym Dołączona grafika
Dołączona grafika
Dołączona grafika
Dołączona grafika
/sklep - otwiera sklep
Dołączona grafika
Znajdź
#include <nvault>

Dodaj za
#include <ColorChat>


Znajdź
new doswiadczenie_za_bombe;

Dodaj za
new doswiadczenie_za_kase;
new doswiadczenie_za_kasez;
new doswiadczenie_za_totek;
new doswiadczenie_za_fail;


Znajdź
register_clcmd("say /reset", "KomendaResetujPunkty");


Dodaj za
register_clcmd("say /sklep", "Sklep");


Znajdź
doswiadczenie_za_bombe = get_cvar_num("cod_bombxp");


Dodaj za
doswiadczenie_za_kase = 100;
doswiadczenie_za_kasez = 300;
doswiadczenie_za_totek = 200;
doswiadczenie_za_fail = 1;

Znajdź
public plugin_cfg()

Dodaj Przed
public Sklep(id)
{
new menu = menu_create("Sklepik:", "Sklep_Handle");
menu_additem(menu, "Ketonal r[Leczy 20 HP] yKoszt: r1500$");
menu_additem(menu, "Flegamina r[Leczy 50 HP] yKoszt: r3000$");
menu_additem(menu, "Aspirina r[Leczy 100 HP] yKoszt: r5000$");
menu_additem(menu, "RedBull r[Wysoki Skok + Szybkie Chodzenie] yKoszt: r2000$");
menu_additem(menu, "Lotto r[Totek] yKoszt: r2000$");
menu_additem(menu, "Doswiadczenie r[Dodaje 100 EXP] yKoszt: r5000$");
menu_additem(menu, "Super Doswiadczenie r[Dodaje 300 EXP] yKoszt: r10000$");
menu_additem(menu, "Losowy Item r[Dostajesz losowy Item] yKoszt: r3000$");
menu_display(id, menu);
}

public Sklep_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
menu_display(id, menu);
new kasa_gracza = cs_get_user_money(id);
new hp = get_user_health(id);
switch(item)
{
case 0:
{
new koszt = 1500;
if (kasa_gracza<koszt)
{
ColorChat(id,GREEN,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy.");
return PLUGIN_CONTINUE;
}
if(hp >= maksymalne_zdrowie_gracza[id])
{
ColorChat(id,GREEN,"[SKLEP]^x01 Jestes w pelni uleczony.");
return PLUGIN_CONTINUE;
}
cs_set_user_money(id, kasa_gracza-koszt);
new ammount=20;
new nowe_zdrowie = (hp+ammount<maksymalne_zdrowie_gracza[id])? hp+ammount: maksymalne_zdrowie_gracza[id];
set_user_health(id, nowe_zdrowie);
ColorChat(id,GREEN,"[SKLEP]^x01 Kupiles^x03 Ketonal");
}
case 1:
{
new koszt = 3000;
if (kasa_gracza<koszt)
{
ColorChat(id,GREEN,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy.");
return PLUGIN_CONTINUE;
}
if(hp >= maksymalne_zdrowie_gracza[id])
{
ColorChat(id,GREEN,"[SKLEP]^x01 Jestes w pelni uleczony.");
return PLUGIN_CONTINUE;
}
cs_set_user_money(id, kasa_gracza-koszt);
new ammount=50;
new nowe_zdrowie = (hp+ammount<maksymalne_zdrowie_gracza[id])? hp+ammount: maksymalne_zdrowie_gracza[id];
set_user_health(id, nowe_zdrowie);
ColorChat(id,GREEN,"[SKLEP]^x01 Kupiles^x03 Flegamine");
}
case 2:
{
new koszt = 5000;
if (kasa_gracza<koszt)
{
ColorChat(id,GREEN,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy.");
return PLUGIN_CONTINUE;
}
if(hp >= maksymalne_zdrowie_gracza[id])
{
ColorChat(id,GREEN,"[SKLEP]^x01 Jestes w pelni uleczony.");
return PLUGIN_CONTINUE;
}
cs_set_user_money(id, kasa_gracza-koszt);
new ammount=100;
new nowe_zdrowie = (hp+ammount<maksymalne_zdrowie_gracza[id])? hp+ammount: maksymalne_zdrowie_gracza[id];
set_user_health(id, nowe_zdrowie);
ColorChat(id,GREEN,"[SKLEP]^x01 Kupiles^x03 Aspirine");
}
case 3:
{
new koszt = 2000;
if (kasa_gracza<koszt)
{
ColorChat(id,GREEN,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy.");
return PLUGIN_CONTINUE;
}
cs_set_user_money(id, kasa_gracza-koszt);
set_user_gravity(id,get_user_gravity(id) - 0.3);
set_user_maxspeed(id,get_user_maxspeed(id) + 10.0);
ColorChat(id,GREEN,"[SKLEP]^x01 Kupiles^x03 RedBulla");
}
case 4:
{
new kasa = cs_get_user_money(id)
new koszt = 2000;
if (kasa_gracza<koszt)
{
ColorChat(id,GREEN,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy.");
return PLUGIN_CONTINUE;
}
cs_set_user_money(id, kasa_gracza-koszt);
ColorChat(id,GREEN,"[SKLEP]^x01 Kupiles kupon Totolotka");
ColorChat(id,GREEN,"[SKLEP]^x01 Trwa losowanie...");
new rand = random_num(0,12);
switch(rand)
{
case 0:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales^x03 10$^x01 !")
cs_set_user_money(id, kasa + 10)
}
case 1:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales^x03 Redbulla^x01 !")
set_user_gravity(id,get_user_gravity(id) - 0.3);
set_user_maxspeed(id,get_user_maxspeed(id) + 10.0);
}
case 2:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Niestety nic nie wygrales !")
}
case 3:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales^x03 300$^x01 !")
cs_set_user_money(id, kasa + 300)
}
case 4:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales^x03 1000$^x01 !")
cs_set_user_money(id, kasa + 1000)
}
case 5:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Niestety nic nie wygrales !")
}
case 6:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Niestety nic nie wygrales !")
}
case 7:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Przegrales^x03 Wszystko^x01 !")
cs_set_user_money(id, kasa - kasa_gracza)
}
case 8:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Niestety nic nie wygrales !")
}
case 9:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales^x03 300 EXP^x01 !")
doswiadczenie_gracza[id] += doswiadczenie_za_kase;

}
case 10:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales 200 EXP^x01 !")
doswiadczenie_gracza[id] += doswiadczenie_za_totek;
}
case 11:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Niestety nic nie wygrales !")
}
case 12:
{
ColorChat(id,GREEN,"[SKLEP]^x01 Wygrales^x03 1 EXP^x01 !")
doswiadczenie_gracza[id] += doswiadczenie_za_fail;
}
}
SprawdzPoziom(id);
return PLUGIN_CONTINUE;
}
case 5:
{
new koszt = 5000;
if (kasa_gracza<koszt)
{
ColorChat(id,GREEN,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy.");
return PLUGIN_CONTINUE;
}
cs_set_user_money(id, kasa_gracza-koszt);
doswiadczenie_gracza[id] += doswiadczenie_za_kase;
ColorChat(id,GREEN,"[SKLEP]^x01 Kupiles^x03 Doswiadczenie");
SprawdzPoziom(id);
}
case 6:
{
new koszt = 10000;
if (kasa_gracza<koszt)
{
ColorChat(id,RED,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy!");
return PLUGIN_HANDLED;
}
cs_set_user_money(id, kasa_gracza-koszt);
doswiadczenie_gracza[id] += doswiadczenie_za_kasez;
ColorChat(id,RED,"[SKLEP]^x01 Kupiles^x03 Super Doswiadczenie!");
SprawdzPoziom(id);
}
case 7:
{
new koszt = 3000;
if (kasa_gracza<koszt)
{
ColorChat(id,RED,"[SKLEP]^x01 Nie masz wystarczajacej ilosci pieniedzy!");
return PLUGIN_HANDLED;
}
cs_set_user_money(id, kasa_gracza-koszt);
DajPrzedmiotX(id, random_num(1, sizeof nazwy_przedmiotow-1));
}
}
return PLUGIN_CONTINUE;
}

Dodatkowo znajdź:
public UsunPrzedmiot(id)
{
informacje_przedmiotu_gracza[id][0] = 0;
informacje_przedmiotu_gracza[id][1] = 0;
if(is_user_alive(id))
set_user_footsteps(id, 0);
set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255);
ZmienUbranie(id, 1);
}

Dodaj za:
public DajPrzedmiotX(id, przedmiot)
{
UsunPrzedmiot(id);
informacje_przedmiotu_gracza[id][0] = przedmiot;
ColorChat(id, GREEN, "[SKLEP]^x01 Wylosowales^x03 %s^x01.", nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);

switch(przedmiot)
{
case 1:
{
set_user_footsteps(id, 1);
}
case 2:
{
informacje_przedmiotu_gracza[id][1] = random_num(3,6);
}
case 3:
{
informacje_przedmiotu_gracza[id][1] = random_num(6, 11);
}
case 5:
{
informacje_przedmiotu_gracza[id][1] = random_num(6, 9);
}
case 6:
{
informacje_przedmiotu_gracza[id][1] = random_num(100, 150);
set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, informacje_przedmiotu_gracza[id][1]);
}
case 7:
{
informacje_przedmiotu_gracza[id][1] = random_num(2, 4);
}
case 8:
{
if(klasa_gracza[id] == Komandos)
DajPrzedmiot(id, random_num(1, sizeof nazwy_przedmiotow-1));
}
case 9:
{
informacje_przedmiotu_gracza[id][1] = random_num(1, 3);
ZmienUbranie(id, 0);
give_item(id, "weapon_hegrenade");
}
case 10:
{
informacje_przedmiotu_gracza[id][1] = random_num(4, 8);
give_item(id, "weapon_hegrenade");
}
case 12:
{
informacje_przedmiotu_gracza[id][1] = random_num(1, 4);
}
case 13:
{
give_item(id, "weapon_awp");
}
case 15:
{
if(klasa_gracza[id] == Rambo)
DajPrzedmiot(id, random_num(1, sizeof nazwy_przedmiotow-1));
}
case 16:
{
set_task(5.0, "WyszkolenieSanitarne", id+ZADANIE_WYSZKOLENIE_SANITARNE);
}
case 19:
{
informacje_przedmiotu_gracza[id][1] = 1;
}
case 26:
{
informacje_przedmiotu_gracza[id][1] = random_num(3, 6);
}
case 27:
{
informacje_przedmiotu_gracza[id][1] = 3;
}
}
}

  • +
  • -
  • 27


#71277 Konwersja nVault -> MySQL

Napisane przez Portek w 07.07.2009 14:37

Szeroko zakrojone pojęcie spamu dosięgło mojego GG i PW, więc postanowiłem opisać sposób konwersji vNault -> MySQL. Konwersja jest szczególnie ważna przy wszelkiego typu modach, które oferują dwa rodzaje zapisu, a my z nieznanego powodu wybraliśmy akurat vNault.

I. Wstęp
Poziom trudności: średni+
Wymagane programy
- Mozilla Firefox - http://www.mozilla-e...org/pl/firefox/
- Wtyczka SQLite Manager - https://addons.mozil...efox/addon/5817
- Jakiś edytor tekstu, ja działałem na Notepad++ który polecam - http://notepad-plus....net/uk/site.htm

Konwersja w poradniku zostanie opisana na pliku vNault z serwera z modem War3FT, choć wszędzie wygląda ona podobnie.

II. Wyciąganie bazy z zakodowanego pliku
Każdy kto próbował wyedytować plik vNault w zwykłym edytorze tekstu wie iż nie zobaczy nic prócz całej masy krzaczków:
Dołączona grafika

Plik ten jest tworzony przy wykorzystaniu SQLite 3, system ten zabezpiecza plik przed wścibskimi to raz, a dwa znacznie ogranicza jego wagę, dla przykładu plik vNault warzący 0,5mb, w wersji MySQL może osiągnąć nawet 1,5mb. Jednym z powodów takiej różnicy jest usunięcie wszystkich tabel które są zupełnie zbędne jeśli chodzi o zapis do pliku.

Żeby zobaczyć odpowiedni kod należy posłużyć się kilkoma sztuczkami, instalujemy program MozillaFirefox, a następnie doinstalowujemy wtyczkę SQLite Manager. Następnie wchodzimy odpowiednio w zakładkę Narzędzia i otwieramy okno wtyczki:
Dołączona grafika

Naszym oczom ukarze się okno programu w którym od tej pory będziemy pracować, wskazujemy plik z bazą danych którą chcemy wyedytować:
Dołączona grafika

Po otworzeniu ukarze się nam struktura pliku i prawie idealna składnia zapytań które musimy wydać, wybieramy z menu po lewej stronie którąś z tabel, ja jako przykład wybiorę wc3_player
Dołączona grafika

Jak widać na screenie program daje nam możliwość bezpośredniej edycji rekordów, usuwanie obecnych, edycji, czy dodania nowych, nas jednak interesuje przycisk Export
Wybieramy odpowiednio zakładkę SQL -> Zaznaczamy obie dostępne opcje -> Klikamy przycisk OK.
Dołączona grafika
Ukarze nam się okno w którym wybieramy gdzie ma być wgrana już prawie gotowa kopia bazy danych (dlaczego prawie, o tym potem), żeby było prosto i żebyśmy nie musieli szukać wybieramy Pulpit i klikamy Zapisz.

III. Poprawa zapytań
Odnajdujemy zapisany plik i otwieramy go w dowolnym edytorze tekstu (w przykładzie użyłem Notepad++
Dołączona grafika
Widzimy już rozkodowaną składnie MySQL, 90% prac już za nami, jednak żeby poprawnie wgrać taką baze należy ją edytować, zapytanie niestety są źle wydane, stąd błąd który będzie pojawiał się przy imporcie w PhpMyAdminie.

Zacznijmy od zapytania które odpowiada za usunięcie tabeli (jeśli istnieje) i utworzenie nowej.
DROP TABLE IF EXISTS "wc3_player";
CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY AUTOINCREMENT, `player_steamid` varchar(25) NOT NULL default '', `player_ip` varchar(20) NOT NULL default '', `player_name` varchar(35) NOT NULL default '', `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );

Bardziej doświadczeni użytkownicy i Ci którzy mieli styczność z bazami danych na pierwszy rzut oka zauważą błędy w składni, jednak żeby nie było masy pytań "co jest nie tak" zaznaczę błędne elementy

DROP TABLE IF EXISTS "wc3_player";

W tej lini wystarczy usunąć znaki ", tak aby zapytanie wyglądało następująco:

DROP TABLE IF EXISTS wc3_player;


W kolejnej lini:

CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY AUTOINCREMENT, `player_steamid` varchar(25) NOT NULL default '', `player_ip` varchar(20) NOT NULL default '', `player_name` varchar(35) NOT NULL default '', `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );

Na zielono zaznaczony jest błąd składni, zaznaczony tekst należy zamienić na auto_increment
Zaznaczone na czerwono zapytania należy usunąć, bowiem parametr default trzeba czymś zapełnić, w naszym przypadku jest to zbędne. Poprawne zapytanie wygląda tak:
CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY auto_increment, `player_steamid` varchar(25) NOT NULL, `player_ip` varchar(20) NOT NULL, `player_name` varchar(35) NOT NULL, `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );

Myślę że większego problemu z edycją kodu w/w zapytań nie będzie, więcej zabawy może być z edycją zapytań rekordów. Niestety wyeksportowane rekordy są źle sformułowane, brakuje w nich odpowiednio zdefiniowanych pól, stąd błąd przy imporcie. Podstawową kwestią jest wyciągnięcie z zapytania tworzącego tabele nazw pól, które musimy osadzić w zapytaniu. Na przykładzie zaznaczyłem pola na kolor zielony:

CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY auto_increment, `player_steamid` varchar(25) NOT NULL, `player_ip` varchar(20) NOT NULL, `player_name` varchar(35) NOT NULL, `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );


Skoro mamy już nazwy tabel zajmijmy się edycja rekordów, świeżo rozkodowana baza wygląda mniej więcej tak:
INSERT INTO "wc3_player" VALUES(1,'','','Portek',07.07.2009);
Brakuje w niej tak jak pisałem wcześniej zdefiniowanych pól do których maja być dodane dane, poprawiamy więc odpowiednio kod:

INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`)VALUES(1,'','','Portek',07.07.2009);

Na pierwszy rzut oka widać co zostało dodane, "wc3_player" zostało zamienione na 'wc3_player', oraz dodane zostały nazwy pól (UWAGA! Ważne żeby nazwy pól były podawane między znakami 'a', oraz było w dokładnie takiej samej kolejności jak w zapytanie tworzącym tabele!).
Nie pozostało nam nic innego jak edycja wszystkich zapytań, ręczna edycja wszystkiego mija się z celem, komu chciało by się to wszystko wstawiać, posłużymy się więc opcją "Zamień". Edytujemy odpowiednio pierwszą linijkę, zaznaczamy stary kod który musimy zamienić, naciskamy klawisze CTRL+H, w pierwszym polu powinien pojawić się stary kod, następnie klikamy na pole poniżej, oraz zaznaczamy wyedytowaną i poprawna już część kodu, ukarze się ona w polu poniżej. Nie pozostaje już nic innego jak kliknąć przycisk Zamień wszystkie
Dołączona grafika

Wyedytowany cały kod, który można poprawnie i bez problemów importować do bazy danych wygląda tak:
DROP TABLE IF EXISTS wc3_player;
CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY auto_increment, `player_steamid` varchar(25) NOT NULL, `player_ip` varchar(20) NOT NULL, `player_name` varchar(35) NOT NULL, `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`)VALUES(1,'','','Portek',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(2,'','','Portek2',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(3,'','','Portek3',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(4,'','','Portek4',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(5,'','','Portek5',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(6,'','','Portek6',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(7,'','','Portek7',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(8,'','','Portek8',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(9,'','','Portek9',07.07.2009);

Poradnik uważam za skończony, nie należy on do łatwiejszych bo i cała operacja nie jest łatwa. Wymagana jest znajomość struktury baz danych, zapytań SQL. W razie problemów proszę o kontakt w tym temacie lub poprzez Prywatną Wiadomość, będę pomagał :-)

Poradnik wykonany dla www.amxx.pl
Copyright � 2009 Portek. Kopiowanie zabronione.

Mówi o tym USTAWA ART.16
  • +
  • -
  • 22


#160922 #2 pytanka

Napisane przez Screeaam... w 17.08.2010 20:43

No Recoil:

W evencie PreThink dodaj:

if(player_class[id] == TwojaKlasa){
		set_pev(id,pev_punchangle,g_angle);
	}

I do zmiennych:

new g_angle[33];

Co do dropowania:

if (zmienna_od_itemku(attacker_id) > 0) 
                 dropitem(id)

Ofc. to do eventu Damage.

I do zmiennych:

zmienna_od_itemku[33];