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

Błędy z Ham_TakeDamage


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 Hagis

    Początkujący

  • Użytkownik

Reputacja: -2
Mniej niż zer0.

  • Postów:13
  • Imię:Ryszard
  • Lokalizacja:Dom
Offline

Napisano 07.01.2014 18:36

Witam.
Napisałem sobie dość skomplikowany plugin wzorując się na innych pluginach, szczególnie na silniku Cod Mod by QTM_Peyote.
Plugin jest przystosowany do serwera zombiemod z exp modem. Jego działanie jest proste:
Za exp można kupić bonus. Po zakupie exp się traci, a bonus zapisuje. Zapis do nVault.
Każdy bonus jest oddzielnym pluginem i ma budowę bardzo podobną, a może nawet taką samą jak perki, czy klasy do Cod Moda.
 
Oto jeden z bonusów:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <expbonuses>
#include <zombieplague>

#include <hamsandwich>
#include <fun>

#define PLUGIN ""
#define VERSION "0.1"
#define AUTHOR "Hagis"
#define CHANCE 2

new const nazwa[]	= "Instant";
new const koszt		=    47000;
new const druzyny[]	= "Zombie";
new const opis[]	= "Szansa na natychmiastowe zarazanie."

new ma_item[33];

public plugin_init() {
	register_plugin( nazwa, VERSION, AUTHOR );
	expbonus_register_item( nazwa, koszt ,opis, druzyny );
	
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
}

public expbonus_item_activate(id)
{
	ma_item[id] = true;
}

public expbonus_item_deactivate(id)
{
	ma_item[id] = false;
}

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!ma_item[idattacker] || !zp_get_user_zombie(idattacker) || zp_get_user_nemesis(idattacker))
		return;
	if( zp_is_swarm_round() || zp_is_plague_round() )	
		return;
		
	if(random(CHANCE) == 0)
		zp_infect_user(this, idattacker, 0, 1)
}

 
Oto, co wypisuje się w logu z errorami:

L 01/07/2014 - 17:20:41: [AMXX] Run time error 4 (plugin "bonusexp_Instant.amxx") - debug not enabled!
L 01/07/2014 - 17:20:41: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Tak dzieje się z każdym bonusem, który zawiera     RegisterHam(Ham_TakeDamage, "player", "TakeDamage")

Gdy edytują wartość damage (np. podwajam dmg), to korzystam z budowy:

#define CHANCE	15
#define BONUS	2.0

{ ... }

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if( !(0 < idattacker  < 33) )
		return
		
	if( !is_user_connected(idattacker) || !ma_item[idattacker] || zp_get_user_zombie(idattacker))
		return
		
	if(random(CHANCE) == 0)
	{
		expbonus_message(idattacker, "Krytyczne uderzenie!")
		new Float:obrazenia = damage * BONUS;
		SetHamParamFloat(4, obrazenia);
	}
	return 
} 

Jak ustawię post na 0, to sytuacja nie zmienia się. Gdzie popełniam błąd?

Wcześniej zamiast nowej wartości Float:obrazenia po prostu pisałem

damage *= Bonus;

SetHamParamFloat(4, damage);

Później zmieniłem kod dodając nową zmienną, ale obawiam się, że to też nic nie daje.

 


  • +
  • -
  • 0

#2 FORMOZA

    KDE User

  • Power User

Reputacja: 411
Wszechobecny

  • Postów:758
  • Imię:Kamil
  • Lokalizacja:Łowicz
Offline

Napisano 07.01.2014 18:43

zamiast tych samych return w tym:


public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if( !(0 < idattacker < 33) )
return

if( !is_user_connected(idattacker) || !ma_item[idattacker] || zp_get_user_zombie(idattacker))
return

if(random(CHANCE) == 0)
{
expbonus_message(idattacker, "Krytyczne uderzenie!")
new Float:obrazenia = damage * BONUS;
SetHamParamFloat(4, obrazenia);
}
return


Daj 
return HAM_IGNORED;

  • +
  • -
  • 0

Diablo Mod V9 Demonic by FORMOZA *Updated 21-12-2013*

Perki by Pas (FORMOZA) cz1 %5BPaczka%5D

Perki by J River (FORMOZA) cz2 %5BPaczka%5D

Dołączona grafika

=================================

Załączony plik  Diablo Install_9.zip   1,2 MB  528 Ilość pobrań

Załączony plik  Perki by Pas DOWNLOAD.zip   127,12 KB  1195 Ilość pobrań


Załączony plik  Perks_by_J_River.zip   178,98 KB  1847 Ilość pobrań

=================================


http://kdemaker.blogspot.com/


#3 K!113r

    Czempion

  • Power User

Reputacja: 385
Wszechpomocny

  • Postów:865
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 07.01.2014 18:55

Ktoś mnie uprzedził o 5 sekund... dodam jedynie, że jeśli masz:

 

L 01/07/2014 - 17:20:41: [AMXX] Run time error 4 (plugin "bonusexp_Instant.amxx") - debug not enabled!
L 01/07/2014 - 17:20:41: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

 

To znak, że coś nie działa, aby poznać szczegóły dopisujesz "debug" po nazwie pluginu w plugins.ini, np.:

 

plałdżin.amxx debug

dzięki temu pomożesz w diagnozowaniu błędu w kodzie.


  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować





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

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