Thank you glad! My whole point was will it work if I made the nft directly on opensea⊠My English is bad so kind of hard to explain. You got any tutorials or a sample contract that i can use as refferance?
Yes I should have clarified that earlier, I was under the assumption that you had created your own contract that was then listed on OpenSea since you were swapping it out.
Possibly the source code of the contract is available, Iâm not finding it in the repo however. Can you post the sample contract address? I donât know enough about this tutorial/project to see if thereâs a similar base contract you could use.
Here is link to the nft thats is used in the tutorial
nft url
contractadress: 0x698d7D745B7F5d8EF4fdB59CeB660050b3599AC3
Tokenid : 0x698d7D745B7F5d8EF4fdB59CeB660050b3599AC3
thanks you saved me so many headaches. i tried this without the json edit on my desktop and my goodness so many errors. i did this on my laptop and works perfectly.
Glad I helped
Hello, I am trying to implement the ClaimNFTcontroller.cs in my own project. I imported all the files from the Web3SpaceShooters directly, however I still get this compile error:
Assets\MoralisWeb3ApiSdk\Moralis\ClaimNftController.cs(138,54): error CS0117: âMoralisInterfaceâ does not contain a definition for âSendEvmTransactionAsyncâ
I did not change any code in the C# file, and the file has no errors in the demo project. What is going on here?
Hi @ardawarcraft and first of all, welcome to the Moralis Unity community
What version of the Moralis SDK do you have installed in your own project?
Thanks!
Hi, thank you
I do not know what version because I directly copied the MoralisWeb3ApiSdk folder fully from the Demo project to My project. I think the specific github directory is this, https://github.com/MoralisWeb3/youtube-tutorials/releases/tag/v1.0.0-unity-web3-spaceFPS , whatever version is used here I use the same because I copy pasted it from there anyway
Hi @ardawarcraft!
Is there any other MoralisInterface
function getting the same definition error or just SendEvmTransactionAsync
?
Thanks!
Hi @dpradell actually yes there is 1 more. ''Assets_Project\Scripts\Moralis\MoralisWeb3Manager.cs(153,30): error CS0117: âMoralisInterfaceâ does not contain a definition for 'InsertContractInstance"
and the other, as you mentioned correctly, is
âAssets_Project\Scripts\Moralis\ClaimNftController.cs(138,54): error CS0117: âMoralisInterfaceâ does not contain a definition for âSendEvmTransactionAsyncââ
@dpradell important note::
this compile error only shows up after the GameManager.cs file is deleted. The reason why it was deleted was this error:
Assets_Project\Scripts\GameManager.cs(43,53): error CS0311: The type âMain.Enemy Dataâ cannot be used as type parameter âTâ in the generic type or method âMoralis LiveQuery Callbacksâ. There is no implicit reference conversion from âMain.EnemyDataâ to âMoralis.WebGL.Platform.Objects.MoralisObjectâ.
maybe if we can fix this compile error and not have to erase gamemanager script, we can fix both
Hi @ardawarcraft!
Ok so now I know whatâs happening. The thing is that copying an SDK folder from a Unity project to another itâs not usually a good practice. When you do that you expose yourself to lose some dependencies on the way.
So the way I would solve this is by doing the following:
-
If you can, start a fresh new project.
-
If not, in your current project, delete all the files that you imported from the Web3 Space FPS project, including the SDK folder, the ClaimNftController and all the files that are generating errors.
-
Import the NEW version of the Moralis Web3 Unity SDK from our GitHub:
-
To import it, copy the HTTPS link and use Add package from Git URL on the Unity Package Manager:
-
Once the new version of the SDK is imported, you can then copy the ClaimNftController.cs from the Web3 Space FPS project. It will generate some errors because we donât use MoralisInterface anymore but just Moralis and also some namespaces have changed so you will need to change every MoralisInterface to Moralis and also change some namespaces. Probably these are the ones that you will need to add:
using MoralisUnity;
using MoralisUnity.Platform.Objects;
using MoralisUnity.Web3Api.Models;
- After you do so, in order to use ClaimNftController.cs you will first need to authenticate to Moralis so you can take a look at how this is done using the new version of the SDK watching this video: https://www.youtube.com/watch?v=3Mw1tDu9gak&t=9s
I hope this is helpful. Let me know on your progress.
David
@dpradell Hi David,
thank you very much for your detailed response. It makes a lot, lot more sense now. Thank youâŠ
I also noticed that SendEVMTransactionAsync is deprecated and there is a new SendTransactionAsync method. When I use the new method, I get this error:
Assets\Scripts\Moralis\ClaimNftController.cs(138,45): error CS1501: No overload for method âSendTransactionAsyncâ takes 7 arguments
this is what I have now that gives the error,
string resp = await Moralis.SendTransactionAsync(âRewardsâ, âmumbaiâ, âclaimRewardâ, _walletAddress, gas, new HexBigInteger(â0x0â), pars);
and I think it should be formatted like this;;;
(string recipientAddress, HexBigInteger value, HexBigInteger gas = null, HexBigInteger gasPrice = null)
What should I change my variables to? I currently did (âRewardsâ, gas, HexBigInteger(â0x0â), pars); and got the following error :
== Assets\Scripts\Moralis\ClaimNftController.cs(138,82): error CS1503: Argument 3: cannot convert from âobject[]â to âNethereum.Hex.HexTypes.HexBigIntegerâ
thank you for all the help
Hi @ardawarcraft,
Iâm glad that I helped. And true, SendEvmTransactionAsync is deprectated in the new version of the SDK so I would use ExecuteContractFunction instead. For parameters, you will pass the same object pars
as the function of the contract didnât change, but some other parameters may vary.
I encourage you to watch the new Moralis Project video releasing tomorrow 10:00 am CET where Iâm explaining exactly how to use this function with the new version of the SDK.
Cheers!
David
Hi David!
I watched the video but I still have trouble writing a C# method for ExecuteContractFunction that does the claim, specifically using pars. But I get lots of errors and I do not really know how to structure it like
public async static UniTask ExecuteContractFunction(string contractAddress,
string abi,
string functionName,
object[] args,
HexBigInteger value,
HexBigInteger gas,
HexBigInteger gasPrice)
{
string result = null;
string gasValue = gas.Value.ToString();
string gasPriceValue = gasPrice.ToString();
if (gasValue.Equals("0") || gasValue.Equals("0x0")) gasValue = "";
if (gasPriceValue.Equals("0") || gasPriceValue.Equals("0x0")) gasPriceValue = "";
try
{
#if UNITY_WEBGL
string functionArgs = JsonConvert.SerializeObject(args);
result = await Web3GL.SendContract(functionName, abi, contractAddress, functionArgs, value.Value.ToString(), gasValue, gasPriceValue);
#else
// Retrieve from address, the address used to authenticate the user.
MoralisUser user = await Moralis.GetUserAsync();
string fromAddress = user.authData[âmoralisEthâ][âidâ].ToString();
Contract contractInstance = Web3Client.Eth.GetContract(abi, contractAddress);
Function function = contractInstance.GetFunction(functionName);
if (function != null)
{
result = await function.SendTransactionAsync(fromAddress, gas, value, args);
}
#endif
}
catch (Exception exp)
{
Debug.Log($âCall to {functionName} failed due to: {exp.Message}â);
}
return result;
}
what would be a better way for me to call pars using ExecuteContractFunction because the names in the new video are different, I am not that experienced with connecting to the blockchain with Unity
Hey, this is a great tutorial.
I am trying to run it but failed. Anyone can help me?
The first step passed - Scanning QR code using my mobile wallet (Trust Wallet)
The second step is not passed. âplease sign authentication message in your walletâ
I confirmed console logs. Here it is.
Sending sign request for 0x941ef5cce9d3889215e6f6eb8600864680f959f6 âŠ
[WebSocket] Exception Unexpected character encountered while parsing value: M. Path ââ, line 0, position 0.
âŠ
Hi @khk.cryptech and welcome to the community.
Try using MetaMask and have the Mumbai testnet imported with some funds in it:
Hello everyone! When transferring the files of this project to another project, I got two errors:(
The first:
Assets\NFT\ThirdParty\NavMeshComponents\Editor\NavMeshAssetManager.cs(44,73): CS1061 error: âPrefabStageâ does not contain a definition for âassetPathâ and could not find an available âassetPathâ extension method that accepts the first argument of type âPrefabStageâ (are you missing a using directive or an assembly reference?)
The second:
Assets\NFT\ThirdParty\NavMeshComponents\Editor\NavMeshAssetManager.cs(46,81): CS1061 error: âPrefabStageâ does not contain a definition for âassetPathâ and an available âassetPathâ extension method could not be found that accepts the first argument of type âPrefabStageâ (are you missing a using directive or an assembly reference?)
Screenshot of the error code:
Thank you in advance for your help!
What files/folders did you copy over exactly and how did you do it?