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
 

Nomaf - zdjęcie

Nomaf

Rejestracja: 07.04.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 14.09.2011 19:29
-----

#293605 [JS|AJAX] BBCode jak tu na forum

Napisane przez Gh0st w 07.09.2011 16:37


function bbcode($tekst)
{
$tekst = str_replace("[b]", "<b>", $tekst);
return $tekst;
}
$text = bbcode($text);


Gdzie zmienna $text to zmienna przetrzymująca np dane formularza

Podałem ci przykład funkcji php jakbyś chciał
Wiem że nie o to pytałeś :) tobie chodziło o "natychmiastowe" :) a to jest z znacznikami xD
  • +
  • -
  • 1


#293449 [JS|AJAX] BBCode jak tu na forum

Napisane przez byCZUS w 06.09.2011 22:49

Hasło w google i już jest :D

http://web.enavu.com...h-text-editors/
  • +
  • -
  • 1


#292986 Działko orbitalne

Napisane przez MarWit w 05.09.2011 17:06

Działko orbitalne

by MarWit



Dołączona grafika

Plugin dodaje możliwość dania przez admina Działa Orbitalnego, znanego z gier typu CnC3 czy Unreal Torunament 2004.
W najbliższym czasie zostanie także stworzony perk do Nowego CoD-a

Komenda ( Flaga "a" ): amx_giveioncannon <gracz> // Daje graczowi działko

Dołączona grafika
- Fakemeta
- HamSandwich

Dołączona grafika

Dzwięki i sprite</gracz>

inne informacje

http://www.youtube.com/watch?v=hqvg26E7sO0

Załączone pliki


  • +
  • -
  • 20


#291190 Server Hop (redirect/przekierowanie)

Napisane przez Hiroshima w 02.09.2011 14:47

Server Hop
by [GRAVE] rig0r

Dołączona grafika


Plugin pozwala na poruszanie się miedzy serwerami, które dodaliśmy do listy ( configs/serverhop.cfg ). Plugin pokazuje statystyki serwera, ile slotów aktualnie na danym serwerze jest zajętych. Informacje podobne jak w xRedirect (aktualizowane co minute ).
Jeśli serwer nieodpowiada, nie będzie pokazywany na liście.

Dołączona grafika
  • Socket Extension - POBIERZ STĄD
  • Działa na każdym modzie na silniku Source.

Dołączona grafika

!hop

lub

!servers

Aby potwierdzić przekierowanie wciskamy klawisz F3. Jeśli nie zadziała należy go zbindować na domyślne ustawienie:

bind "F3" "askconnect_accept"


Dołączona grafika
  • Zainstalować Socket extension: http://forums.allied...ead.php?t=67640
  • Wypakować serverhop.rar do katalogu sourcemod
  • Wpisać swoje serwery do sourcemod/config/serverhop.cfg
  • Przeładować pluginy (sm plugins refresh) lub zresetować serwer
  • Opcjonalnie skonfigurować cvary w cfg/sourcemod/plugin.serverhop.cfg

Dołączona grafika
(cfg/sourcemod/plugin.serverhop.cfg)
  • sm_hop_advertise
    • ustawione na 1 aktywuje powiadomienie o serwerach
    • standardowo: 1
  • sm_hop_advertisement_interval
    • wyświetlaj informacje co x minut
    • standardowo: 1
  • sm_hop_trigger
    • tutaj można ustawić pomocniczą komendę (oprócz !hop )
    • standardowo: "!servers"
  • sm_hop_serverformat
    • sposób wyświetlania serwerów w menu
    • standardowo: "%name - %map (%numplayers/%maxplayers)"
  • sm_hop_broadcasthops
    • ustawione na 1 powiadamia kiedy gracz przejdzie na inny serwer
    • standardowo: 1
Dołączona grafika

Załączony plik  serverhop.rar   11,51 KB  443 Ilość pobrań

  • +
  • -
  • 2


#278795 Ustawianie animacji broni

Napisane przez DarkGL w 06.08.2011 17:12

stock setWeaponAnim(id, anim) {
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}

  • Pierwszy parametr to id gracza
  • Drugi parametr to numer animacji

użycie:
setWeaponAnim(id,1)
graczowi o id trzymanym w zmiennej id zostanie ustawiona pierwsza animacja broni

żeby sprawdzić numer animacji potrzebujemy programu Jed's Half-Life Model Viewer
po otwarciu modelu tym programem:

animacja2.JPG

w tym modelu animacja shoot (strzału) ma numer 2 , w linijce która podkreśliłem mamy numer właśnie odgrywanej animacji
  • +
  • -
  • 13


#267531 Statystyki - Call of Duty MW Mod

Napisane przez R3X w 07.07.2011 18:34

Statystyki - Call of Duty MW Mod

Przepisałem statystyki tego moda stąd

Statystyki mają całkowicie nowe API, przygotowane do obsługi wielu wersji moda w jednym skrypcie. Aktualnie są to wersje:
  • [nVault] Cod Mod Beta
  • [nVault] Cod Mod Final
  • [MySQL] Cod Mod MySQL (wersja z 3 tabelami)
  • [MySQL] Cod Mod MySQL (wersja DarkGL)
nie zoptymalizowałem jeszcze odczytu nVault pod względem pamięci (czyli duże pliki ciągle będą kłopotem), ale zamierzam się za to zabrać

Konfiguracja jest teraz dużo łatwiejsza, dzięki formularzowi: URL/do/statow/configure.php , jest on pokazywany jeśli plik config.php nie istnieje. Stary config nie zadziała, trzeba powpisywać dane jeszcze raz.
Jak ktoś miał własny skin to zawartość prelisting() ,poza tabelą, wylądowała w funkcji HTML_Begin(), po tej zmianie powinno działać

Uwaga
Po instalacji i konfiguracji należy usunać plik configure.php


Najczęstsze błędy:

Błąd przetwarzania pliku .vault

brak plik CodMod.vault

Warning: ftp_fget() [function.ftp-fget]: /CodMod.vault: No such file or directory in /home3/stacjafr/public_html/statycod/update.php on line 29

niedopasowana ścieżka dla danych do FTP, trzeba podać całą ścieżkę od podłączenia się na serwer FTP do pliku CodMod.vault
wszystko/po/drodze/do/cstrike/addons/amxmodx/data/

Read failed

niekompletny plik .vault lub niedopasowana wersja stat (np. plik z bety, staty przełączone na final)


Aktualizacja:
- naprawiona automatyczna aktualizacja
zmienione pliki to:
  • update.php
  • DataSets/nvault/nvaultDataSet.php

Załączone pliki


  • +
  • -
  • 32


#284438 Instalacja SourceBans

Napisane przez Hiroshima w 17.08.2011 23:47

SourceBans
ver. 1.4.8

Wymagania:
-serwer www
-baza mysql
-serwer na silniku Source
-SourceMod 1.3.8
-umiejetnosc myslenia

Przejdź do instalacji po stronie serwera: Instalacja na serwerze↵


INSTALACJA PO STRONIE WWW



1. Pobieramy paczke w wersji 1.4.8: Załączony plik  SourceBans-1.4.8.zip   9,78 MB  1625 Ilość pobrań


2. Uploadujemy zawartosc plik web na FTP serwera
3. Odpalamy przeglądarke i wpisujemy adres do naszego Sourcebans konczac go na /install/ (przyklad: http://jakas.strona....cebans/install/ )
Powinnismy zobaczyc cos takiego:

Dołączona grafika

Po przeczytaniu licencji, znaznaczamy, że się z nią zapoznaliśmy i klikamy OK

Dalszy krok to wypełnienie danych do bazy MySQL:

Dołączona grafika

Po wypełnieniu danych klikamy OK i jeśli wszystko wpisaliśmy dobrze powinniśmy zobaczyć następny krok.

Dołączona grafika

Tutaj musimy nadać odpowiednie CHMODy plikom o które prosi nas skrypt.
Są to katalogi:
/demos
/themes_c
/images/games
/images/maps

Następnie musimy zmienić plik config.dist.php na config.php w glownym folderze SourceBans.

Jeśli poprawnie ustawimy CHMODy klikamy na "check" i powinno nam się wyświetlić coś takiego:

Dołączona grafika

Oczywiście klikamy OK i przechodzimy do części tworzenia admina:

Dołączona grafika

Wypełniamy wszystkie dane jak na screenie i przechodzimy dalej.


Tutaj skrypt zapyta nas czy chcemy importować dane z AMXBans (oczywiście, jeśli nie korzystaliśmy wcześniej z AMXBans i nie mamy swojej listy banów omijamy ten krok i przechodzimy do ostatniego punktu, ktory opisałem poniżej; pod screenem)
Musimy usunąć lub zmienić nazwę katalogu install i updater aby poprawnie zakończyć instalacje naszego SourceBans.

Dołączona grafika

Jeśli zdecydowaliśmy się na import danych z AMXBans klikamy w przycisk widoczny na screenie powyżej i naszym oczom powinno się ukazać coś takiego:

Dołączona grafika

Wypełniamy dane tak jak na screenie i import powinien rozpocząć się automatycznie.



INSTALACJA PO STRONIE SERWERA





Teraz pora na konfiguracje po stronie serwera. Więc wpierw musimy się zalogować na FTP, osobiście używam programu Total Commander a wiec na nim będzie się poradnik opierał :)
Dołączona grafika

Gdy nam się pojawi okno programu wybieramy zakładkę Sieć ;)

Dołączona grafika

Z Zakładki Sieć wybieramy Połączenie FTP

Dołączona grafika

Z Menu które nam się pojawi wybieramy nasz serwer i klikamy Połącz

Dołączona grafika


Gdy zalogujemy się na FTP wchodzimy w katalog orangebox

Dołączona grafika

Następnie przechodzimy do katalogu który odpowiada naszej grze ;)(cstrike dla CS: Source, tf2 - dla TeamFortres 2, itp)

Dołączona grafika

Kiedy już znajdujemy się w katalogu zgodnym z naszym modem( w moim wypadku to katalog cspromod ponieważ mam serwer ProMod ) wchodzimy do katalogu Addons

Dołączona grafika


Następnie przechodzimy do katalogu sourcemod

Dołączona grafika

Następnie wchodzimy do katalogu configs

Dołączona grafika

Gdy juz jesteśmy w katalogu configs szukamy pliku databases.cfg

Dołączona grafika

Pobieramy plik na nasz dysk twardy i otwieramy go naszym edytorem tekstowyn np. NotePad++, Notatnik, WordPad ( osobiście polecam NotePad++ )

Standardowo zawartość pliku databases.cfg wygląda tak:
"Databases"
{
"driver_default" "mysql"

"default"
{
"driver" "default"
"host" "localhost"
"database" "sourcemod"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}

"storage-local"
{
"driver" "sqlite"
"database" "sourcemod-local"
}

"clientprefs"
{
"driver" "sqlite"
"host" "localhost"
"database" "clientprefs-sqlite"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}

}


pod
"clientprefs"
{
"driver" "sqlite"
"host" "localhost"
"database" "clientprefs-sqlite"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}


dodajemy to co wygenerował nam instalator SourceBans na sam koniec aby wyglądało to mniej więcej tak
"clientprefs"
{
"driver" "sqlite"
"host" "localhost"
"database" "clientprefs-sqlite"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}

"sourcebans"
{
"driver" "mysql"
"host" "localhost"
"database" "sourcebans"
"user" "sourcebans"
"pass" "MojeSuperTajneHasloPownedHaxiorki:F"
}


Plik końcowy powinien wyglądać tak
"Databases"
{
"driver_default" "mysql"

"default"
{
"driver" "default"
"host" "localhost"
"database" "sourcemod"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}

"storage-local"
{
"driver" "sqlite"
"database" "sourcemod-local"
}

"clientprefs"
{
"driver" "sqlite"
"host" "localhost"
"database" "clientprefs-sqlite"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}

"sourcebans"
{
"driver" "mysql"
"host" "localhost"
"database" "sourcebans"
"user" "sourcebans"
"pass" "MojeSuperTajneHasloPownedHaxiorki:F"
}
}


Po czym zapisujemy plik i wgrywamy go na FTP.

Po wgraniu pliku cofamy się do katalogu głównego sourcemod'a

Dołączona grafika


Zaznaczamy wszystkie pliki( prawym przyciskiem myszy ) z katalogu sourcemod z folderu który znajduje sie w SourceBans
Katalogi powinny zmienić kolor z Czarnego na Czerwony tak jak na załączonym zdjęciu
Dołączona grafika

Po czym klikamy przycisk F5 Kopiowanie i czekamy aż pliki wgrają się na serwer ;)
  • +
  • -
  • 11


#287603 Zombie Claws v1.1

Napisane przez V3ko w 27.08.2011 13:00

Dołączona grafika
Zombie pokaże pazury - taki opis był na głównej stronie sourcemod'a. A jest to odmiana popularnego ZombieMod'a.

Dołączona grafika
Są to bezpośrednie linki do SS'ów.
http://pics.kz/s1/15...32f8530c81f.jpg
http://pics.kz/s4/3b...265edd52a36.jpg
Dołączona grafika

zr_zombieclaws.sp wrzuć do addons/sourcemod/scripting

zr_zombieclaws.smx wrzuć do addons/sourcemod/plugins

Wypakuj archiuwm z modelami do folderu z grą (cstrike)

zombie_claws.txt wrzuć do cfg/sourcemod/zombiereloaded

downlist_zrclaws.ini wrzuć do addons/sourcemod/data

FOV to zoom w snajperkach, im mniejszy FOV tym zoom jest większy. (eng. Set the FOV of zombie classes to 90 (normal) in the sourcemod/configs/zr/playerclasses.txt to allow them to see their claws)

Config zostanie automatycznie dodany do cfg/sourcemod/zombiereloaded/zombie_claws.cfg

Dołączona grafika
Tutaj modele, uploadowałem sam z tym, że to może wygasnąć tak, że jakby ktoś chciał to niech wrzuci na stałe Dołączona grafika
http://www.speedysha...nd_Textures.rar

Załączone pliki


  • +
  • -
  • 1


#287507 HP Regeneration / Regeneracja HP

Napisane przez V3ko w 27.08.2011 10:09

Dołączona grafika
Tak jak sama nazwa wskazuję polega to na maksymalnemu wyleczeniu naszego życia.(Sterujemy CVARAMI)

Dołączona grafika

hpregen_interval - Określa jaki czas jest pomiędzy dodaniem punktu życia, standardowo "1.0"

hpregen_maxhp - Do jakiego stanu życia ma leczyć ? Standardowo "100HP".

hpregen_inc - Wzrost życia, standardowo "1".

Dołączona grafika
Rozpakuj do odpowiednich folderów.


Dołączona grafika

Załączone pliki


  • +
  • -
  • 2


#287283 [AMXX] Diagnozowanie problemów z pluginami

Napisane przez R3X w 23.08.2011 22:54

Diagnozowanie problemów z pluginami

Zdecydowana większość problemów z pluginami zostawia po sobie wyraźne ślady. Ich odnalezienie i interpretacja to połowa sukcesu w walce z niedziałającym dodatkiem.

1. Stan pluginu
Podstawową informacją o pluginie jest to czy się w ogóle załadował. Najłatwiej to sprawdzić wpisując w konsoli:

amx_showrcon amxx list


Efektem będzie listing podobny do tego:
Dołączona grafika

Wszystkie pluginy mają status running, więc wszystkie zostały poprawnie załadowane. No i pozytywnie :)
Innym, równie dobrym statusem jest debug, to jest takie running, ale przygotowane na błędy

Mniej przyjemniej jest kiedy ilość przeczytanych pluginów nie zgadza się z ilością załadowanych. Częsty problemem jest status bad load
Dołączona grafika
Oznacza to tyle, że w katalogu plugins/ nie ma wskazanego w plugins.ini pliku.
(W skrajnych przypadkach plik może istnieć, ale nie uprawniać serwera do odczytu. Ustawienie chmodu 644 załawiłoby sprawę.)

Inny kiepskim przypadkiem jest status error. Pojawia się wtedy, gdy przetwarzanie pluginu zostanie przerwane, np. za pomocą funkcji set_fail_state
Dołączona grafika
jeśli komunikat jest niejasny, niezrozumiały jedynym wyjściem jest zajrzenie do źródła pluginu i sprawdzenie przyczyny

Rzut okiem i mam winowajcę
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	if(5 > 2)
		set_fail_state("nie chce mi sie");
}
W tym przypadku to tylko głupi żart programisty, zwykle problemy są o wiele poważniejsze.

Jest jeszcze stan paused i stopped, są one związane z komendą amx_pausecfg w plikach konfiguracyjnych oraz funkcją (un)pause() w pluginach. W takim przypadku należy sprawdzić wszystkie wczytanie configi, zwykle są to: amxx.cfg z configs, server.cfg z cstrike/ i configs/maps/NAZWAMAPY_LUB_PREFIX.cfg oraz upewnić się, że żaden plugin nie zatrzymuje naszego niedziałającego dodatku.


2. Logi
Gdy mamy pewność, że plugin został załadowany przyszedł czas na szperanie w plikach. Logi, czyli zapisy czynności, są zapisywane w folderze addons/amxmodx/logs/.

Logi zwyczajne są nazywane w formacie L<RRRRMMDD>.log a logi błędów error_<RRRRMMDD>.log. Informacje o problemach mogą się pojawić i w jednych i w drugich. Zgłoszone błędy całkowicie wyjaśniają powód problemów tylko kiedy plugin ma status debug. Aby wymusić ten stan należy w plugins.ini dopisać debug po nazwie pluginu, np.
test.amxx debug
W stanie running komunikaty są okrojone i nie lokalizują konkretnie źródła błędu, natomiast w debugu mamy informacje o ścieżce wywołania, czyli co i w której linijce po kolei się wykonywało zanim wystąpił problem. Ścieżka sięga ostatniej funkcji wywołanej przez moduł.

3. Komendy nie reagują
Problem występuje zwykle, kiedy 2 pluginy dostarczają takie same komendy. W tej sytuacji zwycięzca bierze wszystko: pierwszy plugin na liście plugins.ini przetworzy komendę i zablokuje ją, przez co żaden inny plugin nie zostanie nawet o niej poinformowany. Rozwiązaniem jest zmiana kolejności ładownia albo zmiana nazw komendy. Istnieją pluginy, które blokują więcej komend niż przetwarzają, np. blokują wszyskie komendy say z / na początku. Takie pluginy powinny znajdować się na samym końcu listy.
  • +
  • -
  • 19


#287221 Timers czyli funkcje czasowe cz. 1 - CreateTimer()

Napisane przez Harsay w 23.08.2011 20:36

Timers czyli funkcje czasowe cz. 1 - CreateTimer()


Wprowadzenie
Timer pozwala na wykonywanie funkcji po jakimś czasie. Jest to odpowiednik set_task z amxx.

Teraz zajmiemy się jedną podstawową funkcją.

CreateTimer() - Tworzy timer :) - a oto jego składnia
native Handle:CreateTimer(Float:interval, Timer:func, any:data=INVALID_HANDLE, flags=0);

interval - Czas podany w sekundach. np. 1.0 czyli 1 sekunda.
func - Nazwa funkcji która ma być wywołana po upływie czasu
data - wartość albo uchwyt
flags - Czyli poprostu flaga w tej części będziemy używać
  • TIMER_REPEAT - Timer będzie się powtarzał aż nie zostanie zwrócone Plugin_Stop

Jednorazowy timer
Jak sama nazwa wskazuje timer jednorazowy wykona funkcję jeden raz po określonym czasie. Tutaj macie przykład:
public OnPluginStart() 
{
	CreateTimer(5.0, DawajInfo) // tworzymy timer
}
 
public Action:DawajInfo(Handle:timer)
{
	PrintToServer("Testowa informacja w konsoli serwera wywolana przez timer")
}
W tym przykładzie gdy plugin zostanie uruchomiony to po 5 sekundach zostanie napisana informacja w konsoli serwera.

Powtarzający się timer
W tym przykładzie co 3 sekundy będzie powtarzana funkcja PrintMsg (dzięki flagi TIMER_REPEAT) aż do momentu gdy NumPrinted będzie miało wartość 5 i zwrócone zostanie Plugin_Stop a przy okazji wyświetli wiadomość w konsoli serwera :)
DajWiadomosc()
{
	CreateTimer(3.0, PrintMsg, _, TIMER_REPEAT)
}
 
public Action:PrintMsg(Handle:timer)
{
	static NumPrinted = 0
	if (NumPrinted++ >= 5)
	{
		PrintToServer("Wiadomosc!!!")
		NumPrinted = 0
 
		return Plugin_Stop
	}
 
	return Plugin_Continue
}

Nie jest to nic trudnego ale mam nadzieję że pomogłem :)
  • +
  • -
  • 6


#287262 Generator XP

Napisane przez R3X w 23.08.2011 21:59

Od dziś na forum dostępny jest Generator XP (link także w menu Dodatki)

Jest to mała aplikacja oparta na kodzie DarkGL pozwalająca na wygenerowanie tablicy z doświadczeniem do różnego rodzaju XP modów. Możemy wybrać moda z listy albo ręcznie wpisać potrzebną nazwę tablicy.

Niektóre mody zamiast ogólnego XP przechowują w tablicy doświadczenie potrzebne do osiągnięcia tego konkretnego poziomu. W takim przypadku należy wybrać doświadczenie między-poziomowe w części Zaawansowane
  • +
  • -
  • 12


#286739 Lighting Smoke Nades

Napisane przez naXe w 22.08.2011 20:27

Dołączona grafika
Nowy efekt dymu: świeci w różnych kolorach podczas wybuchu

Dołączona grafika
lighting_skn 0/1/2 ( domyślnie 1 )
  • 0 = wyłączony
  • 1 = włączony i świeci w rożnych kolorach
  • 2 = włączony z kolorami w formacie RGB
lighting_skn_trails 1/0 - włączone/wyłączone szlaki/ścieżki w dymie. Są one zielone

Dołączona grafika
  • Fakemeta
  • CSX
Dołączona grafika

Dołączona grafika
Dołączona grafika

Dołączona grafika
Załączony plik  lighting_smoke_nades.amxx   4,14 KB  37 Ilość pobrań

Załączony plik  lighting_smoke_nades.sma   2,38 KB  449 Ilość pobrań
  lighting_smoke_nades.amxx


#274704 Podmienianie modeli broni

Napisane przez DarkGL w 27.07.2011 19:39

Pokaże dwie metody gorszą i lepszą na podmienia modeli broni które widzi gracz i modeli które widzą inni gracze patrząc na nas
  • Metoda gorsza:

    do plugin_init dodajemy
    register_event("CurWeapon","CurWeapon","be", "1=1")
    jest to event wywoływany przy zmianie broni , strzale / przeładowaniu (zmianie amunicji) więc dość często prawda ?
    gdzieś w pluginie dodajemy
    public CurWeapon(id)
    {
    	new wid = read_data(2)	// Id broni
    }
    
    w zmiennej wid mamy typ broni ( CSW_*)
    Nazwy broni i ammo do give_item (+ speed) - AMXX.pl: Support AMX Mod X
    załóżmy że chcemy podmienić model noża
    public CurWeapon(id)
    {
    	new wid = read_data(2)	// Id broni
    	if(wid == CSW_KNIFE){
    	}
    }
    teraz kod na podmianę
    • Wykorzystujący engine

      public CurWeapon(id)
      {
      	new wid = read_data(2)	// Id broni
      	if(wid == CSW_KNIFE){
      		entity_set_string(id, EV_SZ_viewmodel, "models/v_nowy_noz.mdl")  
      	}
      }
      
    • Wykorzystujący fakemete

      public CurWeapon(id)
      {
      	new wid = read_data(2)	// Id broni
      	if(wid == CSW_KNIFE){
      		set_pev(id,pev_viewmodel2,"models/v_nowy_noz.mdl")
      	}
      }
      
    może będziemy chcieli podmienić też model p_ czyli ten model którzy widzą inni gracze patrzący na gracza (nie ze specta poprostu patrzący na niego ;D )
    wtedy dodajemy
    • Wykorzystując engine

      public CurWeapon(id)
      {
      	new wid = read_data(2)	// Id broni
      	if(wid == CSW_KNIFE){
      		entity_set_string(id, EV_SZ_viewmodel, "models/v_nowy_noz.mdl")  
      		entity_set_string(id, EV_SZ_weaponmodel, "models/p_nowy_noz.mdl")  
      	}
      }
      
    • Wykorzystując fakemete

      public CurWeapon(id)
      {
      	new wid = read_data(2)	// Id broni
      	if(wid == CSW_KNIFE){
      		set_pev(id,pev_viewmodel2,"models/v_nowy_noz.mdl")
      		set_pev(id,pev_weaponmodel2,"models/p_nowy_noz.mdl")
      	}
      }
      
      jeśli będziemy chcieli podmienić broni to robimy
      public CurWeapon(id)
      {
      	new wid = read_data(2)	// Id broni
      	if(wid == CSW_KNIFE){
      		//podmiana modeli
      	}
      	else if(wid == inna bron){
      		//podmiana modeli
      	}
      }
      
  • Metoda lepsza:

    Wykorzystująca hamsandwich
    w plugin_init dodajemy
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "fwItemDeploy",1);
    drugi parametr jest to classname w przykładzie dałem weapon_knife bo taki jest classname dla noża dla innych broni możecie sprawdzić tutaj
    Nazwy broni i ammo do give_item (+ speed) - AMXX.pl: Support AMX Mod X
    w pluginie w dowolnym miejscu dodajemy
    public fwItemDeploy(wpn){
    	static iOwner;
    	iOwner = pev(wpn,pev_owner);
    }
    
    w zmiennej iOwner mamy id gracza który trzyma broń
    i podmieniamy
    • Wykorzystując engine

      public fwItemDeploy(wpn){
      	static iOwner;
      	iOwner = entity_get_edict(wpn, EV_ENT_owner)
      	
      	entity_set_string(iOwner, EV_SZ_viewmodel, "models/v_nowy_noz.mdl")  
      	
      }
      
    • Wykorzystując fakemete

      public fwItemDeploy(wpn){
      	static iOwner;
      	iOwner = pev(wpn,pev_owner);
      	
      	set_pev(iOwner,pev_viewmodel2,"models/v_nowy_noz.mdl")
      	
      }
    no i jeśli model p także to
    • Wykorzystując engine

      public fwItemDeploy(wpn){
      	static iOwner;
      	iOwner = entity_get_edict(wpn, EV_ENT_owner)
      	
      	entity_set_string(iOwner, EV_SZ_viewmodel, "models/v_nowy_noz.mdl")  
      	entity_set_string(iOwner, EV_SZ_weaponmodel, "models/p_nowy_noz.mdl")  
      }
      
    • Wykorzystując fakemete

      public fwItemDeploy(wpn){
      	static iOwner;
      	iOwner = pev(wpn,pev_owner);
      	
      	set_pev(iOwner,pev_viewmodel2,"models/v_nowy_noz.mdl")
      	set_pev(iOwner,pev_weaponmodel2,"models/p_nowy_noz.mdl")
      }
      
    a jeśli będziemy chcieli podłączyć podmienianie dwóch lub więcej broni w jednej funkcji to robimy

    public fwItemDeploy(wpn){
    	static iOwner;
    	iOwner = pev(wpn,pev_owner);
    	
    	new wpnID = cs_get_weapon_id(wpn)
    	
    	if(wpnID == CSW_KNIFE){
    		//podmiana modelu
    	}
    	else if(wpnID == inna bron){
    		//podmiana modelu
    	}
    }
    ta metoda jest lepsza ponieważ model jest podmieniany tylko przy wyciąganiu (deploy) , przy strzale i przeładowaniu nie ma to miejsca
oczywiście nowe modele muszą być "zprecachowane" ( Dołączona grafika ) w plugin_precache
  • +
  • -
  • 22


#286305 Contain(i) i equal(i)

Napisane przez diablix w 22.08.2011 02:18

Opiszę wam czym się różnią te funkcje Dołączona grafika

Są to funkcje głównie do porównywania Stringów (łańcuchów znaków), czym się różnią ?


equal - equal ( const a[], const b[], [ c ] )
  • Sprawdza czy a posiada ten sam tekst co b, c oznacza ile znaków ma porównać (domyślnie wszystkie)
  • Sprawdza wielkość liter
Przykładowe zastosowanie :

new sClass[32];
pev(iEntity, pev_classname, sClass, sizeof sClass - 1);
if(equal(sClass, "KLASA_BYTU")) client_print(0, 3, "Ten byt posiada klasę KLASA_BYTU!");


new sClass[32];
pev(iEntity, pev_classname, sClass, sizeof sClass - 1);
if(equal(sClass, "BYT"), 3) client_print(0, 3, "Ten byt posiada klasę BYT!");


contain - ( const source[], const string[] )
  • Funkcja sprawdza czy źródło zawiera dany tekst
  • Zwraca -1 jeżeli nie zawiera lub jeżeli zawiera, zwraca pozycję danego fragmentu
  • Sprawdza wielkość liter
Przykładowe zastosowanie :

new sClass[32];
pev(iEntity, pev_classname, sClass, sizeof sClass - 1);
if(contain(sClass, "JAKAS_KLASA") != -1) client_print(0, 3, "Klasa bytu posiada w sobie slowo JAKAS_KLASA");



equali - equali ( const a[], const b[], [ c ] )
  • Funkcja taka sama jak equal, różni się jedynie tym, że NIE zwraca uwagi na wielkość liter.
containi - containi ( const source[], const string[] )

  • Funkcja taka sama jak contain, różni się jedynie tym, że NIE zwraca uwagi na wielkość liter.
To chyba tyle, pisałem dość późno i mogłem coś pomylić Dołączona grafika
  • +
  • -
  • 8