[POMOC] Tvorba vlastného pluginu

Message
Autor
RayCodeCSC
Příspěvky: 58
Věk: 24
Registrován: 03 lis 2018, 18:07
Reputation: 0

[POMOC] Tvorba vlastného pluginu

#1 Příspěvekod RayCodeCSC » 04 zář 2019, 21:13

IP: 82.208.17.101:27867

Zdravím, potreboval by som pomoc ohľadne svojho pluginu. Vytvoril som si v podstate Shop, v ktorom mám rôzne itemy (mačeta, motorovka atď...) ale neviem ako priradím model zbraní ku týmto itemom. Napr. keď hráč stlačí "2. Motorová píla", tak mu to zmení skin knifu na motorovú pílu a nastaví damage. Keď som trocha upravil cestu a premenné, tak po pripojení na Server mi to dá automaticky napr. motorú pílu (takže modely fungujú), ale ja nechcem aby to dalo automaticky, ale chcem aby asi to skrátka ten hráč kúpil.

Script:

Kód: Vybrat vše

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>

new SetModelMoto[33] = 0
new SetModelMachete[33] = 0

new isDamaged_model_Moto[33] = 0
new isDamaged_model_Machete[33] = 0

new MotoValueDamage = 9999999
new MacheteValueDamage = 60

new const p_ModelMotor[] = "models/shopper/motorovka/motorovka.mdl"
new const v_ModelMotor2[] = "models/shopper/motorovka/motorovka2.mdl"

new const p_ModelMachete[] = "models/shopper/machete/machete.mdl"
new const v_ModelMachete2[] = "models/shopper/machete/machete2.mdl"

public plugin_init()
{
   register_plugin("Shop", "1.0", "RayCodeCSC")

   register_clcmd("say /shopper", "shop_menu")

   register_event("CurWeapon", "new_models", "be", "1=1")

   RegisterHam(Ham_TakeDamage, "player", "isDamaged")
}

public plugin_precache()
{
   precache_model(p_ModelMotor)
   precache_model(v_ModelMotor2)

   precache_model(p_ModelMachete)
   precache_model(v_ModelMachete2)
}

public shop_menu(id)
{
   new menu = menu_create("Vyber si z menu:", "shop_menu_selection")

   menu_additem(menu, "Maceta")
   menu_additem(menu, "Motorova pila")

   menu_display(id, menu)
}

public shop_menu_selection(id, menu, item)
{
   if(item == MENU_EXIT)
   {
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }

   switch(item)
   {
      case 0:
      {
         give_item(id, "weapon_knife")
         SetModelMachete[id] = 1
         isDamaged_model_Machete[id] = 1
      }

      case 1:
      {
         give_item(id, "weapon_knife")
         SetModelMoto[id] = 1
         isDamaged_model_Moto[id] = 1
      }
   }
}

public new_models(id)
{
   if(read_data(2) == CSW_KNIFE)
   {
      if(SetModelMoto[id] == 1)
      {
         set_pev(id, pev_viewmodel2, p_ModelMotor)
         set_pev(id, pev_weaponmodel2, v_ModelMotor2)
      }
      else if(SetModelMachete[id] == 1)
      {
         set_pev(id, pev_viewmodel2, p_ModelMachete)
         set_pev(id, pev_weaponmodel2, v_ModelMachete2)
      }
   }
}

public isDamaged(victim, attacker, inflictor, Float:damage, damage_bits, id)
{
   if(get_user_weapon(id) == CSW_KNIFE)
   {
      if(isDamaged_model_Moto[id] == 1)
      {
         SetHamParamFloat(4, MotoValueDamage)
      }
      else if(isDamaged_model_Machete[id] == 1)
      {
         SetHamParamFloat(4, MacheteValueDamage)
      }
   }
}


V kompiléri nemám žiadne error-y, sú tam len 3 warning-y.

Uživatelský avatar
Teiichi
Příspěvky: 866
Věk: 24
Registrován: 29 lis 2014, 02:11
Reputation: 23
Bydliště: <?= $inhome ;?>
Kontaktovat uživatele:

Re: [POMOC] Tvorba vlastného pluginu

#2 Příspěvekod Teiichi » 04 zář 2019, 21:20

Tak tomu nastav atribut, případně cenu, ne?
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.”
Příliš snahy škodí, když programátor použije CTRL+C a CTRL+V více jak jednou, má někde chybu v návrhu.”
In theory, theory and practice are the same. In practice, they’re not.”
Vždy pište kód tak, jako by ten chlapík, co ho po vás bude udržovat, měl být násilnický psychopat, který bude vědět, kde bydlíte.”

RayCodeCSC
Příspěvky: 58
Věk: 24
Registrován: 03 lis 2018, 18:07
Reputation: 0

Re: [POMOC] Tvorba vlastného pluginu

#3 Příspěvekod RayCodeCSC » 04 zář 2019, 21:47

Ako? V Pawn som v podstate začiatočník, ale nejaký ten plugin už urobiť viem.

RayCodeCSC
Příspěvky: 58
Věk: 24
Registrován: 03 lis 2018, 18:07
Reputation: 0

Re: [POMOC] Tvorba vlastného pluginu

#4 Příspěvekod RayCodeCSC » 04 zář 2019, 22:46

Tak teda nakoniec som zistil že mi to funguje :D. Lenže je tu jeden háčik...

Keď zvolím z menu napr. "1. Mačeta", tak sa mi mačeta nastaví až na nové kolo, a mám ju už na stálo. Ale ja chcem urobiť, že hneď ako stlačím tlačítko, tak sa mi zmení model, a na nové kolo sa model zasa zmení na iný, ktorý nastavím.

RayCodeCSC
Příspěvky: 58
Věk: 24
Registrován: 03 lis 2018, 18:07
Reputation: 0

Re: [POMOC] Tvorba vlastného pluginu

#5 Příspěvekod RayCodeCSC » 05 zář 2019, 00:04

(Ospravedlňujem sa za SPAM)

Pridal som nový model, a to ruky, nastavil som že vždy, keď sa hráč spawne, zmení sa mu model na ruky. Problém je v tom, že od tej doby, čo som to pridal, sa mi nezobrazuje žiadny model. Ani rúk, ani motorovky, ani mačety. Nevidím skrátka žiadne ruky. Len crosshair a HUD.

Script:

Kód: Vybrat vše

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>

new SetModelMoto[33]
new SetModelMachete[33]
new SetModelHand[33]

new isDamaged_model_Hand[33]
new isDamaged_model_Moto[33]
new isDamaged_model_Machete[33]

new MotoValueDamage = 9999999
new MacheteValueDamage = 60
new HandValueDamage = 12

new const p_ModelMotor[] = "models/shopper/motorovka/motorovka.mdl"
new const v_ModelMotor2[] = "models/shopper/motorovka/motorovka2.mdl"

new const p_ModelMachete[] = "models/shopper/machete/machete.mdl"
new const v_ModelMachete2[] = "models/shopper/machete/machete2.mdl"

new const p_ModelHand[] = "models/shopper/punos/punos.mdl"
new const v_ModelHand2[] = "models/shopper/punos/punos2.mdl"

public plugin_init()
{
   register_plugin("Shop", "1.0", "RayCodeCSC")

   register_clcmd("say /shopper", "shop_menu")

   register_event("CurWeapon", "new_models", "be", "1=1")

   RegisterHam(Ham_TakeDamage, "player", "isDamaged")
   RegisterHam(Ham_Spawn, "player", "afterSpawn")
}

public plugin_precache()
{
   precache_model(p_ModelMotor)
   precache_model(v_ModelMotor2)

   precache_model(p_ModelMachete)
   precache_model(v_ModelMachete2)

   precache_model(p_ModelHand)
   precache_model(v_ModelHand2)
}

public afterSpawn(id)
{
   give_item(id, "weapon_knife")
   SetModelHand[id] = 1
   SetModelMoto[id] = 0
   SetModelMachete[id] = 0

   isDamaged_model_Hand[id] = 1
   isDamaged_model_Machete[id] = 0
   isDamaged_model_Moto[id] = 0
}

public shop_menu(id)
{
   new menu = menu_create("Vyber si z menu:", "shop_menu_selection")

   menu_additem(menu, "Maceta")
   menu_additem(menu, "Motorova pila")

   menu_display(id, menu)
}

public shop_menu_selection(id, menu, item)
{
   if(item == MENU_EXIT)
   {
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }

   switch(item)
   {
      case 0:
      {
         give_item(id, "weapon_knife")
         SetModelMachete[id] = 1
         SetModelMoto[id] = 0
         SetModelHand[id] = 0

         isDamaged_model_Hand[id] = 0
         isDamaged_model_Machete[id] = 1
         isDamaged_model_Moto[id] = 0
      }

      case 1:
      {
         give_item(id, "weapon_knife")
         SetModelMoto[id] = 1
         SetModelMachete[id] = 0
         SetModelHand[id] = 0

         isDamaged_model_Hand[id] = 0
         isDamaged_model_Moto[id] = 1
         isDamaged_model_Machete[id] = 0
      }
   }
}

public new_models(id)
{
   new weapid = read_data(2)

   if(weapid == CSW_KNIFE)
   {
      if(SetModelMoto[id] == 1)
      {
         set_pev(id, pev_viewmodel2, p_ModelMotor)
         set_pev(id, pev_weaponmodel2, v_ModelMotor2)
      }
      else if(SetModelMachete[id] == 1)
      {
         set_pev(id, pev_viewmodel2, p_ModelMachete)
         set_pev(id, pev_weaponmodel2, v_ModelMachete2)
      }
      else if(SetModelHand[id] == 1)
      {
         set_pev(id, pev_weaponmodel2, p_ModelHand)
         set_pev(id, pev_viewmodel2, v_ModelHand2)
      }
   }
}

public isDamaged(victim, attacker, inflictor, Float:damage, damage_bits, id)
{
   if(get_user_weapon(id) == CSW_KNIFE)
   {
      if(isDamaged_model_Moto[id] == 1)
      {
         SetHamParamFloat(4, MotoValueDamage)
      }
      else if(isDamaged_model_Machete[id] == 1)
      {
         SetHamParamFloat(4, MacheteValueDamage)
      }
      else if(isDamaged_model_Hand[id] == 1)
      {
         SetHamParamFloat(4, HandValueDamage)
      }
   }
}


Zpět na „AMX mod X“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů