Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
 

Zdjęcie

Magiczne pociski- Diablo mod


  • Zamknięty Temat jest zamknięty
11 odpowiedzi w tym temacie

#1 Jaszczomb

    Nowy

  • Użytkownik

Reputacja: 0
zer0.

  • Postów:9
  • Lokalizacja:Legnica
Offline

Napisano 09.01.2010 16:14

Witam
Ostatnim czasem zabrałem się za edytowanie pluginu diablo mod, aby czas wczytywania umiejętności był krótszy. Plugin udało się skompilować i wszystko elegancko działa. Po pewnym czasie gry różnymi klasami zauważyłem jednak, że mimo iż czas wczytywania magicznego pocisku się zmniejszył, a ja z powodzeniem ustawiłem maksymalną liczbę pocisków na 5, po wystrzeleniu jednego pocisku po załadowaniu dowolnej ich ilości, liczba pocisków się zeruje. Za pewne w internecie jest rozwiązanie tego problemu, ale doszedłem do wniosku, że jeżeli naprawię to sam, to przynajmniej czegoś się nauczę.
Otworzyłem zatem kod pluginu i znalazłem poniższy fragment:
if(golden_bulet[id]>0) 
	{
		golden_bulet[id]--
		h_bulet=1
	}
Pomyślałem, że to wina właśnie tej instrukcji warunkowej, więc zacząłem ją analizować. Doszedłem do wniosku, że instrukcja zmniejsza liczbę kul nie bacząc czy gracz strzela czy też nie, więc przerobiłem kod aby wyglądał tak:
	if(golden_bulet[id]>0 && esf_is_shooting(id,1)) 
	{
		golden_bulet[id]--
		h_bulet=1
	}
Oczywiście na początek dodałem oczywiście #include <esf>. Nie wiem czy ustawiłem dobry parametr mode na 1, ale to teraz mniej ważne, Otóż podczas próby kompilacji online mam taki problem:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

/home/groups/amxmodx/tmp3/phphXLGfI.sma(8202) : error 017: undefined symbol "esf_is_shooting"

1 Error.
Could not locate output file /home/groups/amxmodx/public_html/websc3/phphXLGfI.amx (compile failed).
Na moim komputerze również nie mogę skompilować.
W załączniku daję cały zmodyfikowany plik sma mojego diablo moda.
Proszę o pomoc i pozdrawiam.

Załączone pliki


  • +
  • -
  • 0

#2 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 09.01.2010 17:03

a powiedz mi pewna rzecz dlaczego uzywasz modulu do gry esf ?? mozliwe ze zadziala bo w koncu silnik hl1 ale to moze byc przyczyna problemu lub tez to ze web compiler nie ma zainstalowanego tego modulu
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#3 Jaszczomb

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:9
  • Lokalizacja:Legnica
Offline

Napisano 09.01.2010 17:07

Możliwe, że to wina braku tego modułu na serwerze web compilera, aczkolwiek nie znalazłem zamiennej funkcji dla tej z esf'a. Zna ktoś może funkcję sprawdzającą, czy gracz w danym momencie strzela, która byłaby zamienną dla esf_is_shooting(player,module) ?
Btw. używam tego modułu tylko ze względu na tę jedną funkcję.

Użytkownik Jaszczomb edytował ten post 09.01.2010 17:08

  • +
  • -
  • 0

#4 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 09.01.2010 17:13

+attack w consoli?? ale w przypadku diablo to raczej nie zadziala mozesz co 0.5 sekundy sprawdzac ammo i jesli sie zmieni to zmniejszac wtedy nawet na nozu nie bedzie ci zabieralo pociskow
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#5 Jaszczomb

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:9
  • Lokalizacja:Legnica
Offline

Napisano 09.01.2010 17:18

Czyli będę musiał zrobić to na evencie tak? Właściwie to pluginami zajmuję się od dzisiaj także mogę zadawać głupie pytania bo nie znam zbyt wielu funkcji amxx na razie. Mógłbyś mi napisać proponowane przez Ciebie rozwiązanie ?
  • +
  • -
  • 0

#6 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 09.01.2010 17:25

mozesz zrobic 2 zmienne globalne i do jednej zapisujesz ammo w magazynku potem tworzysz funkcje ktora sprawdza ammo i zapisuje je do drugiej zmiennej potem porownuje te zmienne jesli sa rowne zwraca 0 jesli rozne zwraca 1 i potem tylko dodajesz warunek przed zmniejszeniem ilosci pociskow czy wartosc funkcji =1 jesli tak to zmniejszasz oczywiscie funkcje dajesz w tasku ktory co 0.5 s bedzie wywyolywal funkcje sprawdzajaca.

Ale nie musisz tak robic bo pewnie miczu/pav/seba/i paru innych i tak znajda inne rozwiazanie :D
  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#7 Jaszczomb

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:9
  • Lokalizacja:Legnica
Offline

Napisano 09.01.2010 17:27

Dzięki za pomoc, pokminię nad tym, a w między czasie może ktoś inny się odezwie ze swoim rozwiązaniem. Mam nadzieję, że któreś rozwiązanie w końcu zadziała :)
  • +
  • -
  • 0

#8 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1549
  • Lokalizacja:.
Offline

Napisano 09.01.2010 17:51

Task 0.5 sek jest nie na miejscu :F
Lepiej w CurWeapon sprawdzać ammo.
Ja bym to tak zrobił o_O że sprawdzam czy ta sama broń jak nie to nic nie rób jak tak sprawdź różnice w ammo max i obecnym jeśli większa niż poprzednio strzelił ;)
  • +
  • -
  • 0

#9 Jaszczomb

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:9
  • Lokalizacja:Legnica
Offline

Napisano 09.01.2010 18:00

Czyli coś takiego: ?
public zmiana_ammo(id)
{
	new ammo1 = 30

	new ammo2 = read_data(3)
	
	if (ammo1 == ammo2)
	{
		return false
	
	}
	if (ammo1 != ammo2)
	{
		return true

	}
	return PLUGIN_HANDLED
}
Jak już mówiłem słabo znam się na razie na funkcjach i eventach, gdyż dopiero zaczynam z pawn'em i pisaniem pluginów. Proszę o wyrozumiałość :)


Zmieniłem ten kod na następujący:
public zmiana_ammo(id)
{
	new bron = cs_get_weapon_id(id)
	
	new ammo1 = tfc_getweaponammo(bron) 
	
	new ammo2 = cs_get_weapon_ammo(id)
	
	if (ammo1 == ammo2)
	{
		return false
	
	}
	if (ammo1 != ammo2)
	{
		return true

	}
	return PLUGIN_HANDLED
}
Sprawdzę czy działa i dam znać. Proszę jednak również o alternatywne pomysły

Użytkownik Jaszczomb edytował ten post 09.01.2010 18:21

  • +
  • -
  • 0

#10 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 09.01.2010 18:37

lepiej cos takiego z taskiem oczywiscie w plugin_init. Bo z curweapon to co podal Vert to jak zmieni bron to mu odejmie pocisk a jak strzeli to nie verticus no chyba ze curweapon wykrywa tez zmiany w amunicji :D
//gdzies w definicji zmiennych
new gsprawdz[33]
new gsprawdz2[33]
new czy_rowne[33]

//w plugin init gdzies na koncu
set_task(0.5,"sprawdz",0,_,_,"b")

public sprawdz(id){ 
gsprawdz2[id]=cs_get_weapon_ammo ( id)
if (gsprawdz2[id]==gsprawdz[id])  czy_rowne[id]=1
else czy_rowne[id]=0
}
// to do curweapon
gsprawdz[id]=cs_get_weapon_ammo ( id)

// tutaj kawalek kodu ktory zamien
if(golden_bulet[id]>0 && czy_rowne[id]==0) 
	{
		golden_bulet[id]--
		h_bulet=1
	}


Użytkownik G[o]Q edytował ten post 09.01.2010 18:37

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#11 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10831
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 09.01.2010 19:16

Z testow wynika, ze w/w event jest tez wywolywany po wystrzeleniu naboju (ammo sie zmienia) lub po przeladowaniu. i tak na marginesie 0.5 sekundy to za wolno

Użytkownik DarkGL edytował ten post 09.01.2010 19:17

  • +
  • -
  • 0

#12 Jaszczomb

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:9
  • Lokalizacja:Legnica
Offline

Napisano 09.01.2010 19:23

Zrobiłem wszystko tak jak napisałeś G[o]Q i niestety nie przyniosło to efektu. Tymczasowo ustawie mniejszy czas ładowania pocisku i dam maksymalną ilość 1, do puki nie znajdzie się jakieś rozwiązanie.
Może ma ktoś gotowca? bo sądzę, że to jednak jeszcze ponad moje siły.

Użytkownik Jaszczomb edytował ten post 09.01.2010 19:24

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych